PHP中“include_once”和“require_once”有什么区别?
include_once "connect_to_mysql.php";
require_once "connect_to_mysql.php";
这些之间有什么区别吗?
答案 0 :(得分:41)
如果文件丢失,Include将让脚本继续运行(带警告)。
如果丢失,则需要崩溃。
如果你使用include作为100%可选的东西,那么include仍然会有效并且需要会爆炸。
如果你包含一些你认为是可选的东西,但是你的脚本的其他部分使用了它,那么你的脚本会在那里爆炸,你可能不知道为什么。
这不是编写程序的好方法。
否则,两者之间没有区别。
在典型用法中,无论您选择在95%的时间内使用include
还是require
都无关紧要。
因此,您应该坚持require
(或require_once
),告诉您何时丢失所需的文件。
包含文件内包含文件的错误,包含文件内部的文件,如果缺少一个包含顶部的文件,则很难找到。
有些人更喜欢include
,因为他们想要使用“功能”
道格拉斯·克罗克福德是一个JavaScript / Java / C ++人,而不是PHP,但他认为,为了你的理智,应该避免看起来像错误或副作用与错误无法区分的功能。
请注意,如果您的整个项目完全基于类(或功能),并且完全模块化,那么除了在应用程序初始化时重置配置对象上的值之外,您应该没有太多用于包含(对于已经require
d。
正如您可能猜到的,还有其他方法可以做到这一点。
这些只是建议,但建议来自比我更聪明的人,拥有数十种语言的数十年经验。
答案 1 :(得分:14)
include_once
会抛出警告,但不会阻止PHP执行其余的脚本。
require_once
将抛出错误 ,将阻止PHP执行其余脚本。
答案 2 :(得分:6)
不同之处在于require_once()
会在失败时产生致命错误,而include_once()
只会产生警告。
答案 3 :(得分:0)
页面停止执行 require_once 无法加载所需文件,另一方面 include_once 将继续而不是加载错误,包括文件。