缘起
今天,和我一起做项目的朋友跟我提了一个问题,他让我尽量使用 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 在计算为假的语句中也会执行?