为什么需要包含PHP?
如果您经常不得不使用295263292258888882或require_once(因为它们通常非常重要),尝试在PHP中使用include或include_once的库有什么意义?
locoboy asked 2020-07-05T05:52:21Z
9个解决方案
46 votes
有时,您会包含不受控制的库中的文件,或者您的代码正在不同的环境中运行。
其中的某些脚本实际上可能不是您的脚本所必需的,而是帮助文件或其他文件。
例如,如果您的PHP生成HTML,则可以使用include添加横幅。 但是,如果由于某些原因缺少标语文件,您不希望文件暂停。 您可能要优雅地失败。
jopke answered 2020-07-05T05:53:15Z
31 votes
include/include_once和require/2952633327355954954179之间的区别是,当找不到文件时,前者会触发警告,而后者会触发错误。 意见可能会有所不同,但是IMO,如果由于某种原因不存在或无法读取所需的文件,则表示情况非常糟糕,我宁愿看到错误并停止执行,也不愿发出警告并在明显中断的情况下继续执行。 因此,我认为最好的方法是单独使用require/require_once,并且完全避免include/include_once。
Asaph answered 2020-07-05T05:52:46Z
7 votes
include-尝试加载文件,但如果失败则不停止执行
include_once-与'include'相同,但运行附加检查以确保文件未包含在当前脚本中
require-这会尝试加载文件,并在失败时引发致命错误
require_once-与'require'相同,但运行附加检查以确保仅加载一次
如果不需要使用include_once或require_once,请避免使用它们,因为额外的检查会增加一些开销。
编辑:我应该补充一点,它们的关键区别在于require在编译器级别失败,而include在运行时抛出错误。
soulkphp answered 2020-07-05T05:53:57Z
3 votes
如果Require无法包含文件,它将停止脚本。
包含将仅给出错误消息。
顺便说一句:* _once很慢。 除非确实需要,否则不应该使用它。
slowkvant answered 2020-07-05T05:54:26Z
2 votes
因为您不希望丢失的文件停止播放。 ;)
shinkou answered 2020-07-05T05:54:46Z
2 votes
这四个文件都可以将本地文件或URL作为输入。 require_once()和include_once()函数实际上在功能上相似,只是它们处理不可回收资源的方式不同。 如果无法检索资源,则include()和include_once()会发出警告,并尝试继续执行程序(如果可能),而如果require()和require_once函数找不到资源,则它们会停止处理页面。
最好使用require_once()包含包含代码的文件,并使用include_once()包含不包含代码的文件,例如 HTML,CSS等。(这是我的方法,其他方法可能有所不同。)
另请阅读:[http://arin.me/blog/php-require-vs-include-vs-require_once-vs-include_once-performance-test]
Harry Joy answered 2020-07-05T05:55:16Z
2 votes
显然,include只会生成警告...
因此,如果您有可能丢失的文件(例如,动态包含可能安全地失败的模板)并且您正在抑制警告(或不介意膨胀的日志),则file_exists&require成为include。
但是,这似乎不是一个很常见的用例。 包含仍然很常见的原因(Occam的Razor?)更可能是这样:
include更具语义意义,并且在其他语言中也可以看到。
Nicole answered 2020-07-05T05:55:51Z
0 votes
[http://tr.php.net/manual/en/function.include.php]上的文档以以下内容开头:
include()语句包括和 评估指定的文件。
以下文档也适用 要求()。
[http://tr.php.net/manual/en/function.require.php]上的文档说:
require()与include()相同 除非失败,否则也会 产生致命的E_COMPILE_ERROR级别 错误。 换句话说,它将停止 脚本,而仅include() 发出警告(E_WARNING) 允许脚本继续。
请参阅include()文档以获取 这是如何工作的。
我认为就足够了:)
Savas Alp answered 2020-07-05T05:56:38Z
0 votes
区别仅在于错误处理,而所需文件不存在:如果是include,您可以轻松处理警告,更改执行以显示正常的“抱歉,错误”页面,并将通知发送给站点的管理员。
在require的情况下,脚本将停止,致命错误更加难以处理,并且您无法向用户显示任何消息。
OZ_ answered 2020-07-05T05:57:03Z