苏南大叔填坑:详谈php中require和include的主要区别及测试环境为win10、php@5.6
最近苏南大叔撰写了 node 环境下的 require 与 import 的区别。随后,他突然想起很多年前曾在一篇文章里埋下了一个坑,即 php 的经典面试题:require 和 include 有什么区别。那么,在本文中,苏南大叔将填补这个坑,讲讲在 php 中,include 和 require 的最大区别。

在 php 代码里,使用 include 和 require 存在哪些区别呢?(如 4-1 图所示)
大家好,这里是苏南大叔的“程序如此灵动”博客。这里会讲述苏南大叔与计算机代码之间的故事。本文主要讲述在 php 中,使用 include 语句和 require 语句时,具体存在哪些不同之处。本文的测试环境为:win10 以及 php@5.6。
区别之处
在实际 php 应用中,经过不断的经验总结后发现,include 和 require 几乎没有区别,它们都是用于引入某个文件的。经过不断测试得知,两者的区别在于:若被引用的文件不存在,就会有较大差异。
当被引用的文件不存在的时候,
现在假设不存在404.php这个文件。
include不存在的文件warning
在 php 代码里,include 和 require 这两者在使用上有哪些差别呢?(如 4-2 所示)
测试代码demo_include.php如下:
include ("404.php");
echo "continue";
测试结果:
警告:在 demo_include.php 的第 4 行,include(404.php) [函数.include]:无法打开流:没有这样的文件或目录。
警告:在 demo_include.php 的第 4 行,include()函数[function.include]无法打开“404.php”进行包含(include_path='.;C:\php5\pear')。
continue
require不存在的文件fatalerror
在 php 代码里,使用 include 和 require 这两者存在怎样的区别呢?(图 4-3)
demo_require.php
require ("404.php");
echo "continue";
测试结果:
警告:在 demo_require.php 的第 4 行,require(404.php) [函数.require]:无法打开流:没有这样的文件或目录。
致命错误:require()函数[function.require]:在 demo_require.php 的第 4 行,无法打开所需的“404.php”(包含路径为“.;C:\php5\pear”)。
网传的不一致
循环中表现一致,下述代码测试,两者表现一致。
//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 存在哪些区别呢?(如图 4 - 4 所示)
参考文献总结
在 php 里,include 与 require 的区别是:当被引用的文件不存在时,二者的态度有所不同。include 会接受这种情况并给出警告(warning),而 require 则完全不能接受,会产生致命错误(fatal error)。
苏南大叔的理解仅限于此。倘若您持有不同的观点,欢迎您留下言论。关于更多 php 相关的经验文章:
【源码】本文代码片段及相关软件,请点此获取更多信息
【绝密】秘籍文章入口,仅传授于有缘之人
php