QQ 1640076782

2013年06月22日

require() include() require_once()和include_once()区别

Filed under: phper — 标签:, , , — liphp @ 2:40 上午

一: include() 、require()

相同点:都能包含并运行指定文件。这两结构在包含文件上完全一样,

不同点:两者的区别在于错误的处理。
include语句只有在被执行时才会读入要包含的文件。在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!

require在错误处理方面,如果包含发生错 require() 会出现一个致命错误,脚本会停止运行。

<?php
include(‘a.php’);
echo ‘include test final!’;//include报错,但是会继续执行,显示:include test final!
require(‘b.php’);
echo ‘require test final!’;//require报错,停止代码的执行。
?>

二: require_once()、include_once()

require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。require_once()函数的作用和 require() 是几乎相同的。换句话说:require_once的作用是会检查之前是否加载过该文件,如果没有加载则加载 如果加载过就不再次加载.比如某文件定义了一个类型 如果两次加载该文件会出现错误.

include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。include_once()函数的作用和 include() 是几乎相同的。

注意:
(1)require()和include()是php中的一种语言特性,而不是函数。所以包含的文件要不能有控制结构:例如:不能使用return这样的语句。他会当作错误处理。

(2) 路径问题:

特别是嵌套包含的时候,一定得注意包含文件的路径。
比如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一个文件夹下,这个时候往往很容易出错误。
解决方案:可以使用 dirname(__FILE__) 语句,这句的意思是获得当前脚本的绝对路径。如:require_once(dirname(__FILE__).’/config.php’)

(3).效率问题
当我们经常访问一个数据库的时候我们可以把他写成一个文件,比如:conn.inc.php

<?php
$dbh =  mysql_connect(‘localhost’,”,”);
mysql_select_db(‘test’);
?>

在实际应用时,我们可以在程序中调用这个文件。
如require(“conn.inc.php”)或者include(“conn.inc.php”)
两个函数的效果是差不多的。

include_once(),require_once(),与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。这一问题在PHP5版本有很大改进,不过效率还是有差别。

(4)适用范围

包含文件任意次数,出错时终止脚本运行:适用require()

包含文件任意次数,且出错时不停止:适用include

包含文件一次,出错时终止脚本运行:适用require_once()

只包含文件一次,且出错时不停止:适用include_once()

如果你有外贸企业网站建站需求,欢迎随时联系我们

QQ客服:415682727

电话:020-39907297

MSN:xueposter@gmail.com