【问题标题】:When should I use include require and require_once in my examples? [duplicate]在我的示例中何时应该使用 include require 和 require_once? [复制]
【发布时间】:2012-07-27 16:47:14
【问题描述】:

可能重复:
When should I use require_once vs 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)

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

【问题讨论】:

  • 什么,include_once 得不到爱?

标签: php


【解决方案1】:

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

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

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

  • header.php
  • footer.php

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

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

【讨论】:

  • 如果函数是同一个函数,为什么要重新声明函数不好?
  • @user1349313: 1. 这毫无意义。 2.它会导致错误。
  • 是的,我理解它毫无意义,但如果该函数的功能没有改变,它怎么会导致错误?
  • @user1349313:因为函数重新声明在 PHP 中是非法的。 PHP 应该如何知道函数的工作原理是一样的?
  • 什么是 PDO?对不起,我是新手
【解决方案2】:

除非我特别需要多次包含一个文件(比如页面上不止一个位置的模板),否则我总是使用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_onceinclude_once,因为它们比requireinclude 慢。虽然它们确实较慢,但并不明显;在您的脚本减慢一毫秒之前,它需要大约 10,000 次包含。这种差异是如此之小,您不必担心速度。

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 2012-06-10
    • 2011-12-08
    • 2011-01-25
    • 2015-10-31
    相关资源
    最近更新 更多