Heim >Backend-Entwicklung >PHP-Tutorial >PHP中 include,include_once,require,require_once的比较

PHP中 include,include_once,require,require_once的比较

WBOY
WBOYOriginal
2016-06-23 13:55:32904Durchsuche

【学习目的】PHP中 include,include_once,require,require_once的比较


【所用函数】include,include_once,require,require_once,

dirname(__FILE__) 取到的是当前文件的绝对路径,比起相对路径,查找速度是最快的。


① include 和 require 语句用于在执行流中向其他文件插入有用的的代码。

include 和 require 很相似,除了在错误处理方面的差异:

  • require 会产生致命错误 (E_COMPILE_ERROR),并停止脚本
  • include 只会产生警告 (E_WARNING),脚本将继续
  • 因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 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__);得到的是文件所在层目录名

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn