PHP中的“include_once”和“require_once”有什么区别?

时间:2014-02-16 16:52:11

标签: php

PHP中“include_once”和“require_once”有什么区别?

include_once "connect_to_mysql.php";

require_once "connect_to_mysql.php";

这些之间有什么区别吗?

4 个答案:

答案 0 :(得分:41)

如果文件丢失,Include将让脚本继续运行(带警告)。

如果丢失,则需要崩溃。

如果你使用include作为100%可选的东西,那么include仍然会有效并且需要会爆炸。

如果你包含一些你认为是可选的东西,但是你的脚本的其他部分使用了它,那么你的脚本会在那里爆炸,你可能不知道为什么。

这不是编写程序的好方法。

否则,两者之间没有区别。

修改

在典型用法中,无论您选择在95%的时间内使用include还是require都无关紧要。

因此,您应该坚持require(或require_once),告诉您何时丢失所需的文件。

包含文件内包含文件的错误,包含文件内部的文件,如果缺少一个包含顶部的文件,则很难找到。

有些人更喜欢include,因为他们想要使用“功能” 道格拉斯·克罗克福德是一个JavaScript / Java / C ++人,而不是PHP,但他认为,为了你的理智,应该避免看起来像错误或副作用与错误无法区分的功能。

请注意,如果您的整个项目完全基于类(或功能),并且完全模块化,那么除了在应用程序初始化时重置配置对象上的值之外,您应该没有太多用于包含(对于已经require d。

的对象,包括admin-override选项或dev-debugging选项

正如您可能猜到的,还有其他方法可以做到这一点。

这些只是建议,但建议来自比我更聪明的人,拥有数十种语言的数十年经验。

答案 1 :(得分:14)

include_once会抛出警告不会阻止PHP执行其余的脚本。

require_once将抛出错误 将阻止PHP执行其余脚本。

答案 2 :(得分:6)

不同之处在于require_once()会在失败时产生致命错误,而include_once()只会产生警告。

答案 3 :(得分:0)

页面停止执行 require_once 无法加载所需文件,另一方面 include_once 将继续而不是加载错误,包括文件。