require_once和include_once一起包含两次文件吗?

时间:2010-09-07 14:22:55

标签: php include

如果我有这个:

require_once('myfile.php');

然后:

include_once('myfile.php');

文件是否会再次包含或只包含一次?

这两者有什么区别?需要在失败时导致错误并包括尝试恢复?还有其他差异吗?

3 个答案:

答案 0 :(得分:11)

如果包含该文件,则包含该文件。

requice_once()的工作方式与include_once()完全相同,只是在找不到要包含的脚本时会杀死脚本。

因此,在您的示例中,脚本包含一次。

答案 1 :(得分:0)

概念: Include执行它在tin上所说的内容:它包含当前文件代码中的'myfile.php'代码。 Require更像是其他编程语言中的import语句。

_once后缀表示如果文件已经通过以前的include / require语句可用于当前脚本,或者通过其他导入脚本中的include / require语句递归,则PHP可以避免包含/要求该文件。

答案 2 :(得分:0)

该文件会再次包含还是只包含一次?

myfile.php只包含一次。

require_once 'myfile.php'; //included
include_once 'myfile.php'; // not included

两者有什么区别?

include_oncerequire之间的区别在于,当他们找不到文件include_once时会发出警告,require会发出致命错误。

  

require与include相同,除非失败,它还会产生致命的E_COMPILE_ERROR级别错误。换句话说,它将暂停脚本,而include仅发出警告(E_WARNING),允许脚本继续。   [http://php.net/manual/en/function.require.php]

需要在失败时导致错误并包括尝试恢复?还有其他差异吗?

include允许您恢复是,失败的require语句总是以一种方式结束,try catch甚至无法保存您的脚本。

值得指出的是,如果使用了四个文件评估结果(includeinclude_oncerequirerequire)的其他组合,会发生什么。

如果找到该文件

includerequire将始终包含该文件,无论您之前是否使用过requireincluderequireinclude_once同一个文件。

include_once 'myfile.php'; //included
include 'myfile.php'; //always included
require 'myfile.php'; //always included
require_once 'myfile.php'; // not included, prevously included via [function.include_once], [function.include] and [function.require]

include_oncerequire只会包含以前未使用requireincluderequire或{{3}添加的文件声明。

require 'myfile.php'; //always included
include_once 'myfile.php'; // not included, prevously included via [function.require]