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

Far*_*ost 25 php

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

include_once "connect_to_mysql.php";

require_once "connect_to_mysql.php";
Run Code Online (Sandbox Code Playgroud)

这些之间有什么区别吗?

Nor*_*ard 47

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

如果丢失,则需要崩溃.

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

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

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

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

编辑

在典型的使用中,无论您选择使用include还是require95%的时间都无关紧要.

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

包含文件内包含文件的错误,包含文件内部的错误,当包含顶部的文件丢失时,很难找到.

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

请注意,如果您的整个项目完全基于类(或功能),并且完全是模块化的,那么除了在应用程序初始化时重置配置对象上的值(包括管理员)之外,您应该没有太多用途.对已经存在的对象执行覆盖选项或dev-debugging选项require.

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

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

  • 这不回答问题 - "require_once()`和`include_once()`之间的区别是什么?". (3认同)
  • @AmalMurali这正是答案,以人类可理解的格式:`include`将继续执行并发出警告,如果资源丢失,`require`将以致命错误终止.也许你可以再次阅读前两个陈述.此外,他并没有要求`include`和`include_once`之间的差异,所以为了讨论起见,`include`和`require`之间的*整体*差异适用于它的所有实例.约定优于配置. (3认同)

Ban*_*ago 14

include_once将抛出警告,不会阻止PHP执行脚本的其余部分.

require_once将抛出错误 阻止PHP执行脚本的其余部分.

  • “……失败”! (2认同)

Ama*_*ali 6

区别在于require_once()失败时会产生致命错误,而include_once()只会产生警告.