文件包含相当于将另一个文件的代码全部复制到另一个文件中,然后执行。包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。比如说我们在浏览csdn很多页面中,基本都是看到下面的内容,为了不要每次都要写这个代码,我们就可以使用文件包含
0x01 文件包含四个语句
- include
- require
- include_once
- require_once
0x02 每个语句的语法
include:位置任意,当PHP脚本执行到include指定引入的文件时,才将它包含并尝试执行,当第二次包含到相同文件时,PHP还是会重新解释一次,所以include的执行效率相对而言比较低
head.php代码
<?phpecho '<p align=\"center\"><p align=\"center\"><font size=\"2\">这是首部</font></p></p>';
?>
test.php
<?phpheader('content-type:text/html;charset=utf-8');echo '这是test文件';echo '<br>';include('./head.php'); echo '<br>';include('./head.php');
?>
require:一般放在最前,PHP执行前就会先读入require指定引入的文件,包含并尝试执行引入的脚本文件,当第二次包含到相同文件时,PHP不会重新解释一次,相对而言,效率较高
test.php
<?phpheader('content-type:text/html;charset=utf-8');echo '这是test文件';echo '<br>';require('./head.php'); echo '<br>';require('./head.php');
?>
远行结果和include一样
require_once / include_once:分别与require / include作用相同,不同的是他们在执行到时会先检查目标内容是不是在之前已经导入过,如果导入过了,那么便不会再次重复引入其同样的内容。
test.php
<?phpheader('content-type:text/html;charset=utf-8');echo '这是test文件';echo '<br>';require_once('./head.php'); echo '<br>';require_once('./head.php');
?>
head.php只包含了一次
0x03 相互区别
include和require:include有返回值,而require没有返回值。include在加载文件失败时,会生成一个警告,但在错误发生后脚本继续执行。require在加载失败时会生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本停止执行。
test.php包含head2.php,这个文件我没创建
<?phpheader('content-type:text/html;charset=utf-8');echo '<br>';include('./head2.php'); echo '<br>';echo '这是test文件';
?>
使用require
<?phpheader('content-type:text/html;charset=utf-8');echo '<br>';require('./head2.php'); echo '<br>';echo '这是test文件';
?>
include和include_once:include载入的文件不会判断是否重复,只要有include语句,就会载入一次(即使可能出现重复载入)。而include_once载入文件时会有内部判断机制判断前面代码是否已经载入过。
require和require_once:同include和include_once的区别相同。