最新消息:

include 和 include_once 有什么分别?require 呢?

PHP Skiychan 1116浏览

三者都是用来在脚本中插入其他档案,视乎 url_allow_fopen 是否核准,这个档案可以从系统内部或外部取得。但他们之间也有微细的分别:
include():这个函式容许你在脚本中把同一个档案插入多次,若果档案不存在,它会发出系统警告并继续执行脚本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在脚本的执行期间,有关档案只会被插入一次。
require():跟 include() 差不多,它也是用来在脚本中插入其他档案,但若果档案不存在,它会发出系统警告,这个警告会引致致命错误令脚本中止执行。

require()
include()
这两一般放在代码前面,功能除了处理失败情况不一样,其它都是一样,如果包含的文件不存在时,require会停止运行发生致命错误提示。而include则是只显示一警告,代码会继续执行。

require_once()
include_once()
这两一个一般放在流程控制中,除了以上错误处理的区别外,功能都是一样的,跟没有once的区别就是包含的文件已经在前包含过,第二次包含不会再被引入。

在PHP中include和require比较容易混淆。下面的例子可以说明他们的区别。
我们经常把数据库连接写成一个文件。
conn.php

在实际应用中,我们调用文件如:
require(“conn.php”)或者include(“conn.php”);
但是如果这样:
filename.php

文件到myfun将不能继续执行,因为函数里无法得到外面的变量include也是一样的,除非把$dbh作为一个变量传递给函数,这有增加了函数的复杂度。
我们可以通过把require和include放在函数里面来解决
如果用include,文件的第一个函数调用处讲顺利通过,单第二个调用将无法执行,原因是不能在没有关闭数据库时在打开一次,也就是说,conn.php执行了两次。将include换成require一切都正常。
也就是说,require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,此按此再执行到这里,仍将再执行一次。
因此,如果在一次循环中,默写语句你只想执行一次,那你用require包括他们就可以了。但是require会导致致命性错误。include出错会继续执行。

转载请注明:SKIY开发笔记 » include 和 include_once 有什么分别?require 呢?