【学习目的】PHP中 include,include_once,require,require_once的比较
【所用函数】include,include_once,require,require_once,
dirname(__FILE__) 取到的是当前文件的绝对路径,比起相对路径,查找速度是最快的。
① include 和 require 语句用于在执行流中向其他文件插入有用的的代码。
include 和 require 很相似,除了在错误处理方面的差异:
因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
②四个函数在执行速度方面,相差无几。
区别在于,如果存在一个文件多次加载的情况,include和require函数会加载多次,而 include_once和require_once函数只会加载一次。同时处理加载失败的情况不同,include() 和include_once() 产生一个警告而 require() 和 require_once() 则导致一个致命错误。
(1)include_once()语句在脚本执行期间包含并运行指定文件。此行为和 include()语句类似,唯一区别是include_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。
include_once()应该用于嵌套包含的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
(2)require_once()语句在脚本执行期间包含并运行指定文件。此行为和 require()语句类似,唯一区别是require_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。
③ 注意事项
(1)路径问题:特别是嵌套包含的时候,一定得注意包含文件的路径。
例如:A文件包含B文件,B文件包含C文件,ABC文件均不在同一文件夹下时候,特容易出错。
解决方案:
可以使用dirname(__FILE__)语句,这句的意思是获得当前脚本的绝对路径。
例如:include(dirname(__FILE__)."/inc/conn.inc.php");
dirname(dirname(__FILE__));得到的是文件上一层目录名 dirname(__FILE__);得到的是文件所在层目录名