include和include_once有什么区别?


What is the difference between include and include_once with and without round brackets

我最近发现php中有更多类型的include()我的问题是以下说明的区别是什么:

include_once 'file.txt';
include 'file.txt';
include ('file.txt');
include_once ('file.txt');

如果没有创建file.txt,我得到的错误信息是什么?

文件名周围的括号没有区别。include是一个语言结构,而不是一个函数,所以它不需要在参数周围加上括号。所以它们是等价的,就像:

echo "foo";
echo ("foo");

所以只有两种形式:includeinclude_once。它们之间的区别在于,如果您试图在同一脚本中多次包含相同的文件,将会发生什么。include将每次都包含它,include_once将只在第一次执行它,并忽略所有重复。

如果文件执行某些操作,例如回显HTML或设置变量,则通常使用includeinclude_once用于定义函数和类的文件,因为如果您尝试重新定义它们,这些文件将得到错误。

如果文件不存在,你会得到这样的警告:

警告:include(file.txt): failed to open stream:第4行/path/to/your/script.php中没有这样的文件或目录
警告:include():打开'file.txt'包含失败(include_path='.:')在/path/to/your/script.php的第4行

includeinclude_once的警告相同。

还有requirerequire_once。它们就像includeinclude_once一样,但是如果文件不存在,它不会打印警告,而是打印错误并停止脚本。