如果我有这个:
require_once('myfile.php');
然后:
include_once('myfile.php');
文件是否会再次包含或只包含一次?
这两者有什么区别?需要在失败时导致错误并包括尝试恢复?还有其他差异吗?
答案 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
和include_once
如果找不到文件,都会发出警告。
include_once
和require
之间的区别在于,当他们找不到文件include_once
时会发出警告,require
会发出致命错误。
require与include相同,除非失败,它还会产生致命的E_COMPILE_ERROR级别错误。换句话说,它将暂停脚本,而include仅发出警告(E_WARNING),允许脚本继续。 [http://php.net/manual/en/function.require.php]
需要在失败时导致错误并包括尝试恢复?还有其他差异吗?
include
允许您恢复是,失败的require
语句总是以一种方式结束,try
catch
甚至无法保存您的脚本。
值得指出的是,如果使用了四个文件评估结果(include
,include_once
,require
和require
)的其他组合,会发生什么。
如果找到该文件
include
和require
将始终包含该文件,无论您之前是否使用过require
,include
,require
或include_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_once
和require
只会包含以前未使用require
,include
,require
或{{3}添加的文件声明。
require 'myfile.php'; //always included
include_once 'myfile.php'; // not included, prevously included via [function.require]