当前位置: 代码迷 >> Web前端 >> require()跟include()的区别
  详细解决方案

require()跟include()的区别

热度:758   发布时间:2012-11-20 09:55:43.0
require()和include()的区别

php提供了两种包含外部文件的方法:include()和require()。

require()和include()都属于服务器端引用(Server Side Includes)中的常用方法。它们有许多相似之处,也有些不同。理解它们的不同点非常重要,否则很容易犯错误。

require包含文件的时候是绝对的包含,如果被包含的文件不存在那么会产生一个致命错误(fatal error),在错误发生后下面的脚本程序将不会执行,此外,因为require语句相当于将另一个源文件的内容完全复制到本文件中,所以一般将其放在源文件的起始位置,用于引用需要使用的公共函数文件和公共类文件等,像c语言的预处理程序#include一样都是写在文件头位置,引入外部文件。

include的包含文件是相对的,如果被包含文件不存在,那么会产生一个warning警告,但是下面的脚本程序继续执行,此外, include包含的文件一般写在程序执行中。

=============================================================================

 

include()语句是一个常规的php函数;而require() 是一种特殊的语言结构,它的使用受到一些限制。对这两者来说,不管使用哪个语句来包含文件,解析程序都将退出php模式并在目标文件的开头进入HTML模 式。这意味着目标文件中的所有应该作为php脚本执行的代码都必须被包含在有效的php起始标记和终止标记中。
在同一脚本中,每次出现include()函数,它都会被执行,它甚至有可能被包含在循环或条件语句中。这意味着通过使用条件判断是否包含一个文件,它还可以使用循环结构包含一组文件。include()语句对文件的处理将终止。
require()语句与include()语句是不同的,它不能受任何控制结构的控制。这说明使用require()不能有条件的包含文件。如果这个 语句出现在循环中,或者位于取值为假的条件语句中,它也都会执行,并且只执行一次。另一个区别是,使用require()语句包含的文件不能有返回值。试 图在require()语句中返回值将会产生一个解析错误。

=============================================================================

include()和require()的区别 这相信是PHP中最基本的问题了,也是很多公司面试时必考的题呵呵。

给大家复习一下:

require() :如果文件不存在,会报出一个fatal error.脚本停止执行
include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行

这里特别要注意的是:
使用include()文件不存在时,脚本继续执行,这种情况只出现在PHP 4.3.5之前,这一点,往往被人忽视。

推荐使用require_once()和include_once(),可以检测文件是否有重复包含。


=============================================================================

php的require()性能与include()相类似。不同之处在于,对include()来说,在 include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语 句)。这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时相读取不同的文 件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。

===============================================================================

在PHP中使用头文件,会涉及两个函数:include()和require()。这两个函数差别很小,却很重要,所以我们要认真研究一下。 require()函数工作方式与XSSI相类似;不管在程序的哪个部分使用了这个函数,只有程序一开始运行,头文件的内容就被作为程序本身的一部分来处 理。因此,如果您在一个条件判定语句中使用了require()函数,那么即使这个条件即使不为真,头文件也会被包含进来。

而include()函数只是在执行到这一条语句时才会把头文件内容包含进来。如果程序没运行到这里,那PHP是不会管它的。这就意味着,您在条件判定部分使用include时,它会完全按照您希望的那样工作。

还有,如果您用了require()函数,而您指定的头文件并不存在,那么程序将会停止运行并产生错误。如果您用了include(),程序会产生一个警告信息,但是会继续运行。

  相关解决方案