对比
方法 | 文件导入时机 | 被导入文件出错处理机制 被导入文件不存在或运行报错 | 是否会重复包含 |
include | 文件在运行是导入,所以不一定会被导入 | 抛出警告,继续执行 | 多次调用,会多次导入 |
include_once | 多次调用,只导入一次 | ||
require | 文件在解析的时候导入,所以一定被导入 | 抛出错误,停之执行 | 多次调用,会多次导入 |
require_once | 多次调用,只导入一次 |
导入文件时机
Bash
<?php
if (false) {
// 只有代码运行到此处的时候才会导入 demo.php 文件
include('demo.php');
}
if (false) {
// 即使条件是fase,解析程序首先在解析的时候就会执行此处的导入操作
require('demo.php');
}
所以 require 语句一般放在php文件最顶部,用于加载必要的代码。
而 include 语句一般是放在流程控制代码段中执行,有条件的加载其他文件代码。
带有 _once 后缀的差异
include 和 include_once 的用法一致,唯一区别是先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。但是在使用 include() 时,可以忽略"()",如直接写成 include 'demo.php';
require 和 require_once 的差异同上。
有无返回值
include 有返回值,require 没有返回值
Bash
$res = include('demo.php');
if (!empty($res)) {
echo '文件导入成功';
} else {
echo '文件导入失败';
}