php代码中,使用include和require有什么区别?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
最近苏南大叔写了node
下的require
和import
区别。就忽然间想起,很多年前曾经在一篇文章里面埋过一个坑,php
的经典面试题:require
和include
有啥区别。那么,本文中苏南大叔就来填一下这个坑。说说在php
中,include
和require
的最大区别。
大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码的故事。本文讲述php
中,使用include
语句和require
语句,有什么具体的不同之处。本文测试环境:win10
,php@5.6
。
区别之处
经过不断的经验总结,在实际php
应用中,include
和require
几乎是没有什么区别的,都是用来引入某个文件的。经过不断测试,两者区别在于:当被引用的文件不存在的时候,会有较大的区别。
当被引用的文件不存在的时候,
include
抛出异常,但是会继续执行,也就是说:include
处理异常为warning
。用于引入html
代码片段,即使文件不存在,也不会退出执行。require
抛出异常,拒绝执行,也就是说:include
处理异常为fatal error
。用于引入类库文件,如果不存在就直接报错退出执行。
现在假设不存在404.php
这个文件。
include不存在的文件warning
测试代码demo_include.php
如下:
include ("404.php");
echo "continue";
测试结果:
Warning: include(404.php) [function.include]: failed to open stream: No such file or directory in demo_include.php on line 4
Warning: include() [function.include]: Failed opening '404.php' for inclusion (include_path='.;C:\php5\pear') in demo_include.php on line 4
continue
require不存在的文件fatalerror
demo_require.php
require ("404.php");
echo "continue";
测试结果:
Warning: require(404.php) [function.require]: failed to open stream: No such file or directory in demo_require.php on line 4
Fatal error: require() [function.require]: Failed opening required '404.php' (include_path='.;C:\php5\pear') in demo_require.php on line 4
网传的不一致
循环中表现一致,下述代码测试,两者表现一致。
//require
$i = 1;
while ($i < 3) {
require "./a$i.php";
$i++;
}
//include
$i = 1;
while ($i < 3) {
include "./a$i.php";
$i++;
}
处理被包含文件的内部错误时,表现一致。
比如被包含文件404.php
内调用了一个不存在的函数test()
的时候,都会导致fatalerror
程序停止执行。
参考文献
总结
在php
中,include
和require
的区别在于:被引用的文件不存在时,两者的态度不一致。include
表示可以接受(warning),require
则表示完全不能接受(fatal error)。
苏南大叔的理解就这么多,如果您有不同看法,欢迎留言。更多php
相关经验文章:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。