0

可能重复:
我什么时候应该使用 require_once 和 include?

例如,如果我有:

header part(header.php)
footer part(footer.php)
list of functions (functions.php)
list of constants (constants.php)
connect to database part(connection.php)
footer part + close the connection part(footer.php)

在这些示例中,我应该使用include,require还是require_once请注意为什么?

4

2 回答 2

8

对于包含函数、类和其他实用程序的文件,您通常希望require_once在多个库(或其他东西)中意外重新声明任何内容并破坏内容。

  • functions.php
  • constants.php
  • connection.php

对于您通常想要的模板文件require,因为它们应该能够被包含多次而不会引起问题。(在这两个文件的特定情况下,这不太可能。)

  • header.php
  • footer.php

你永远*不想使用include(或include_once)。就像require,但仅在文件不存在时显示警告 - 可能不是预期的。

现在您注意到您的页脚关闭了数据库连接。您通常希望避免模板文件中的副作用。此外,关闭数据库连接可能是不必要的。(鉴于您可以关闭它,这里有一些建议:改用 PDO!)

于 2012-07-30T01:13:06.790 回答
1

除非我特别需要多次包含一个文件(比如页面上不止一个位置的模板),否则我总是使用require_once. 尽管在模板的情况下,使该模板成为可以具有多个实例化的类将是一种更好的模式,因此该文件只会被包含在一次中。例如:

class TemplateExample() {
    function display() {
        echo "I'm a template!";
    }
}

$template = new TemplateExample();
$template->display();
echo "Some text between the templates.";
$template->display();

还值得注意的是,有一些消息来源说不要使用require_once,或者include_once因为它们比require和慢include。虽然它们确实较慢,但并不明显;在您的脚本减慢一毫秒之前,它需要大约 10,000 个包含。这种差异是如此之小,以至于您不必担心速度。

于 2012-07-30T03:01:13.907 回答