很多人在用include require可以实现文件引入,但这两个函数有什么区别呢
如以下 xxx.php为不存在路径
include('xxx.php');
echo 'test';
这样将会是
Warning: include(xxx.php) [function.include]: failed to open stream: No such file or directory inF:\apmserv\www\Henry\test.php on line 2
Warning: include() [function.include]: Failed opening 'xxx.php' for inclusion (include_path='.;F:\apmserv\lib_include') in F:\apmserv\www\Henry\test.php on line 2
test
而
require('xxx.php');
echo 'test';
将会是以下结果
Warning: require(xxx.php) [function.require]: failed to open stream: No such file or directory inF:\apmserv\www\Henry\test.php on line 2
Fatal error: require() [function.require]: Failed opening required 'xxx.php' (include_path='.;F:\apmserv\lib_include') inF:\apmserv\www\Henry\test.php on line 2
include_once require_once 分别代替上面的函数
1、
require() :如果文件不存在,会报出一个fatal error.后面的脚本停止执行 相当后面exit
include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行如以下 xxx.php为不存在路径
include('xxx.php');
echo 'test';
这样将会是
Warning: include(xxx.php) [function.include]: failed to open stream: No such file or directory inF:\apmserv\www\Henry\test.php on line 2
Warning: include() [function.include]: Failed opening 'xxx.php' for inclusion (include_path='.;F:\apmserv\lib_include') in F:\apmserv\www\Henry\test.php on line 2
test
而
require('xxx.php');
echo 'test';
将会是以下结果
Warning: require(xxx.php) [function.require]: failed to open stream: No such file or directory inF:\apmserv\www\Henry\test.php on line 2
Fatal error: require() [function.require]: Failed opening required 'xxx.php' (include_path='.;F:\apmserv\lib_include') inF:\apmserv\www\Henry\test.php on line 2
2、不同之处在于,对include()来说,在include()执行时文件每次都要进行读取和评估;
而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。
这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。
3、require是只执行一次的,不,这么说不恰当。应当说,require是先替代,将指定文件的内容代进来,再运行,所以它不知道你是否设置了FOR循环。而include语句,是什么时候执行到了,什么把指定文件的内容代进来,继续执行。
所以,如果每次执行代码时想读取不同的文件,或者有通过一组文件叠代的循环,就使用 include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。
4、include在执行时,如果 include 进来的文件发生错误的话,不会立刻停止;而 require 则会立刻终止程序,不再往下执行。
5、include可以用在循环; require不行。
6、include有返回值,而require没有(可能因为如此require的速度比include快)
7 、如果为了防止同个文件被多次引入可以用include_once