php 必须包含,为什么需要包含PHP?

为什么需要包含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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值