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()不能有条件的包含文件。如果这个 语句出现在循环中,或者位于取值为假的条件语句中,它也都会执行,并且只执行一次。

转载请注明:知识蚂蚁 » php中require()和include()的区别

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消