
4.4 文件包含

在PHP中可能很多地方需要用到文件包含,文件包含是指将经常用到的部分代码分离出来,放在单独的一个文件中,在需要的页面中引入该文件。本节将介绍PHP中包含文件的4种语句,即include、require、include_once和require_once语句。
4.4.1 使用include和require包含文件
include与require功能类似,都是包含并运行指定文件。
【例4-13】(实例文件:ch04\Chap4.13.php)include和require包含文件实例。

a.php文件中的内容如下:

在IE浏览器中运行结果如图4-22所示。

图4-22 include和require包含文件结果
注释:在例4-13中,分别使用include和require包含a.php文件,然后输出a.php文件中的变量$str1和$str2。
include与require虽然有类似的功能,但是有以下两点区别:
(1)使用include语句来包含文件时,如果包含的文件没有找到,include语句会输出警告,不会终止脚本的运行,而require语句则会输出致命错误,并且立即终止脚本的运行。
(2)require语句通常放在PHP脚本程序的最前面,include语句一般放在流程控制的处理区段中,PHP脚本文件读到include语句时,才将它包含的文件读进来。
【例4-14】(实例文件:ch04\Chap4.14.php)include和require不同之处实例。

在IE浏览器中运行结果如图4-23所示。

图4-23 include和require不同之处运行结果
从例4-14的结果可以看到,include包含不存在的文件时,是不会终止脚本运行的,而require会终止脚本运行。
4.4.2 使用include_once和require_once包含文件
include_once和require_once语句也是在脚本执行期间包含并运行指定文件,与include和require语句基本一样,唯一的区别是如果文件中已经包含了某个文件,include_once和require_once语句则不会再次包含该文件。所以,为了避免多次包含同一文件,可以用include_once语句或者require_once代替include和require语句。
【例4-15】(实例文件:ch04\Chap4.15.php)include_once和require_once语句实例。

c.php文件中的内容如下:

在IE浏览器中运行结果如图4-24所示。
注释:在例4-15中,首先使用include包含c.php文件两次,都在相应的位置输出了内容,然后使用include_once来包含c.php文件,由于已经包含了c.php文件,include_once不会重复包含c.php文件,所以不会输出内容。

图4-24 include_once和require_once语句运行结果