【发布时间】:2018-10-12 03:20:39
【问题描述】:
require("file.php");
require_once("file.php");
两者都包含所需的文件,如果找不到文件或存在任何其他问题,则会出现致命错误。如果发生错误,两者都会停止执行。
这两个函数有什么区别?
【问题讨论】:
-
“这两个函数有什么区别?” -- 它们不是函数而是语言结构(语句)。
标签: php
require("file.php");
require_once("file.php");
两者都包含所需的文件,如果找不到文件或存在任何其他问题,则会出现致命错误。如果发生错误,两者都会停止执行。
这两个函数有什么区别?
【问题讨论】:
标签: php
require_once() 语句与 require() 相同,只是 PHP 会检查文件是否已被包含,如果是,则不再包含 (require) 它。
【讨论】:
如果文件丢失,包含将使脚本继续运行(带有警告)。
Require 会在丢失时崩溃。
如果您将 include 用于 100% 可选的东西,那么 include 仍然可以工作,而 require 会爆炸。
如果您包含一些您认为是可选的内容,但您的脚本的其他部分使用它,那么您的脚本将在那里爆炸,您可能不知道为什么。
这不是编写程序的好方法。
否则,两者之间没有区别。
在典型用法中,95% 的情况下,您选择使用 include 还是 require 并不重要。
因此,您应该坚持使用require(或require_once),以便在您丢失所需文件时告诉您。
在被包含文件中包含文件、在被包含文件中、当顶部缺少一个包含时所产生的错误真的很难追查。
有些人更喜欢include,因为他们想使用那个“功能”。
Douglas Crockford 是 JavaScript/Java/C++ 专家,而不是 PHP,但他建议为了您的理智,应该避免看起来像 bug 或与 bug 无法区分的副作用的功能。
请注意,如果您的整个项目完全基于类(或函数式)并且完全模块化,那么除了在应用程序初始化时重置配置对象上的值(包括 admin-override 选项或 dev-debugging 选项)在已经是 required 的对象上。
正如您可能猜到的那样,还有其他方法可以做到这一点。
这些只是建议,但建议来自比我更聪明的人,他们在数十种语言方面拥有数十年的经验。 参考:Difference between "include" and "require" in php
【讨论】: