理解下include、include_once、require和require_once这4个函数:
include函数:会将指定的文件读入并且实行里面的程序;require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;include_once 函数:在脚本实行期间包含并运行指定文件。此行为和 include 语句类似,唯一差异是如果该文件中已经被包含过,则不会再次包含。犹如此语句名字暗示的那样,只会包含一次;require_once 函数:和 require 语句完备相同,唯一差异是 PHP 会检讨该文件是否已经被包含过,如果是则不会再次包含。1 include与require的差异
include与require除了在处理引入文件的办法不同外,最大的差异便是:include在引入不存文件时产生一个警告且脚本还会连续实行,而require则会导致一个致命性缺点且脚本停滞实行。
<?php include 'no.php'; echo '123';?>
如果no.php文件不存在,echo '123'这句是可以连续实行的.
你看到的可能是类似下边的情形:
<?phprequire 'no.php';echo '123';?>
如果no.php文件不存在,echo '123'这句是不实行的,在require时就停滞了。
你看到的可能是类似下边的情形:
include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而 require()则是无条件包含函数。
例如不才面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:
if($something){include(\公众somefile\"大众);}
但不管$something取何值,下面的代码将把文件somefile包含进文件里:
if($something){require(\"大众somefile\公众);}
2 include与include_once的差异(require与require_once的差异)
include_once (require_once)语句在脚本实行期间包含并运行指定文件。此行为和 include (require)语句类似,差异是如果该文件中的代码已经被包含了,则不会再次包含,只会包含一次。include_once(require_once)须要查询一遍已加载的文件列表, 确认是否存在, 然后再加载。
<?phprequire '1.php';require '1.php';?>
这种情形下1.php被包含两次。
<?phprequire '1.php';require_once '1.php';?>
这种情形下,第二次包含时,是不会进行包含的。
include(require)与include_once(require_once)的决议问题
常日:include_once和require_once会有性能上的低落,由于他须要判断之前是否包含过。一样平常情形下,也不太须要去考虑,除非这已经影响到你程序的性能了。
如果利用 APC 只管即便也不要用include_once,由于apc.include_once_override配置项没有很好的被实现(详情百度)。
注1:Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。
require常日利用方法,这个函数常日放在 PHP 程序的最前面,PHP 程序在实行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include常日利用方法,这个函数一样平常是放在流程掌握的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种办法,可以把程序实行时的流程大略化。
return 在返回引用的时候加上括号不但效率低而且会造成逻辑缺点。那么这几个函数呢?
理论上来说:include和require后面加不加括号对实行结果没有差异,但是加上括号效率较低,所往后面能不加括号就不加括号。