缘起
今天,和我一起做项目的朋友跟我提了一个问题,他让我尽量使用 include,少使用 require,这使我感到十分奇怪。
询问一下,他给出的答案竟然是 include 好控制,而 require 不好控制,并且提出了一个让我感到奇怪的观点——require 在计算为假的语句中也会执行。
这,我在 PHP 手册中从来没看到过,也从来没听说过。
分析
PHP 手册中说:
如果最后仍未找到文件则
include结构会发出一条警告;这一点和require不同,后者会发出一个致命错误。
require和include几乎完全一样,除了处理失败的方式不同之外。require在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而include只产生警告(E_WARNING),脚本会继续运行。
实践
对于这个问题,我决定试试看,毕竟实践出真知。闲来无聊,试试看不就知道了。
测试环境:PHP 5.3.28
代码:
file.php:
<?php echo 'Is Show?' ?>
require.php
<?php
echo 'Hello!'
if (false) {
require 'file.php';
}
?>
结果,得到了以下输出:
Hello!
现在有答案了吧?
更多内容见:
我在知乎的提问:PHP require 在计算为假的语句中也会执行?