PHP提供了两种包含外部文件的方法:include()和require()。
require()和include()都属于服务器端引用(Server Side Includes)中的常用方法。它们有许多相似之处,也有些不同。理解它们的不同点非常重要,否则很容易犯错误。
出错处理方式
两者的第一个区别是,对于包含的文件不存在的时候是如何处理的
require包含文件的时候是绝对的包含,如果被包含的文件不存在那么会产生一个致命错误(fatal error),在错误发生后下面的脚本程序将不会执行。
include包含文件的时候是相对的包含,如果被包含文件不存在,那么会产生一个warning警告,但是下面的脚本程序会继续执行。
条件引用方式
在PHP中,include()是有条件包含函数,而require()则是无条件包含函数。
例如在下面的例子中,使用include的时候,如果变量$somgthing为真,则将包含文件somefile:
if($something){ include("somefile"); }
但不管$something取何值,使用require的时候,下面的代码都将把文件somefile包含进文件里:
if($something){ require("somefile"); }
下面的这个有趣的例子充分说明了这两个函数之间的不同。
$i = 1; while ($i < 3) { require("somefile.$i"); $i++; }
在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include():
$i = 1; while ($i < 3) { include("somefile.$i"); $i++; }
require()语句与include()语句是不同的,它不能受任何控制结构的控制。这说明使用require()不能有条件的包含文件。如果这个 语句出现在循环中,或者位于取值为假的条件语句中,它也都会执行,并且只执行一次。