包含/需要条件内部的 PHP 行为

2022-08-30 21:00:29

如果我在条件语句中放置一个计算结果为 的条件语句,PHP 解释器会完全跳过 include 文件,还是会加载它以防万一?includerequirefalse

例如:

if ($some_user_var) {
    require 'this.php';
} else {
    //do stuff
}

我在某个地方读到,无论条件如何,解释器总是会包括它,但不会。如果是这种情况,只需从 切换到 就可能意味着由于减少了 I/O 和解析开销而实现了免费加速。requireincluderequireinclude

如果我运行像eAccelerator这样的预处理器,这可能会有所不同,但让我们假设我没有。


答案 1

仅当条件为真时,才会包含它。我不知道你在哪里读到,但他们错了。

和 之间的唯一区别是,如果失败,它将引发警告,而会引发致命错误。includerequireincluderequire

要确认这一点,请参阅 PHP 手册页以了解要求

(ps - 如果你正在做有条件的包含,根据reaon是什么,你可以考虑使用或代替)include_once()require_once()


答案 2

这是不正确的。 不会包括包装在块中的文件,它们永远不会被调用,php解释器不会忽略它们。 并且在性能方面几乎没有差异(就此而言,它们与_once也没有太大差异,尽管它更重要)。requireincluderequire


推荐