include_once包括什么?仅变量/功能或其他东西?

时间:2012-08-11 13:11:03

标签: php

我有一个带有以下代码的文件test.php

<?php
//name of this file is test.php
$foo = "some value";
include_once 'extras.php';
$bar = "another value";
echo "test.php: foo is $foo and bar is $bar <br />";
?>

另一个带代码的文件

<?php
echo "extras.php: foo is $foo and bar is $bar <br />";
?>

输出表明来自extras.php的echo语句也包含在test.php中,而我是一个新手,假设include_once或include构造只处理变量和函数而忽略其他东西。什么是正确的,请指导。 谢谢

4 个答案:

答案 0 :(得分:1)

include_once将整个脚本包含在调用脚本中,只要之前没有包含。这包括所有变量,函数,echo ...所有内容。实际上,代码被导入到include_once行所在的空间中,因此可以在调用脚本中引用included ed脚本的变量。

在处理include后,您发布的脚本如下所示:

<?php
//name of this file is test.php
$foo = "some value";
echo "extras.php: foo is $foo and bar is $bar <br />";
$bar = "another value";
echo "test.php: foo is $foo and bar is $bar <br />";
?>

请注意,如果找不到该文件,则脚本不会出错,但不会设置include d脚本中设置的变量。为此,请使用require_once

答案 1 :(得分:1)

您可以将include_once视为“如果文件尚未包含在内,请删除此行并在此处粘贴文件内容”。

对于我来说,有一个奇怪的异常,就像这个与包含文件中定义的变量变量范围相关(它们最终会在全局范围内)。关于here的更多信息。

答案 2 :(得分:1)

您最好了解includeinclude_once

例如,我们可能会收集3个文件;

<强>的functions.php

<?php
function foo(){
echo 'some code';
}
?>

<强> GLOBALS.PHP

<?php
include('FUNCTIONS.PHP');
foo();
?>

<强>的header.php

<?php
include('FUNCTIONS.PHP');
include('GLOBALS.PHP');
foo();
?>

现在,如果您尝试打开HEADER.PHP,则会收到错误,因为GLOBALS.PHP已包含FUNCTIONS.PHP。您将收到错误消息,指出function foo()已在GLOBALS.PHP中声明,我也包含在HEADER.PHP中 - 这意味着我已将FUNCTIONS.PHP两次包括在内。

所以为了确保我只包含FUNCTIONS.PHP一次,我应该使用include_once()函数,因此我的HEADER.PHP应如下所示:

<?php
include_once('FUNCTIONS.PHP');
include('GLOBALS.PHP');
?>

现在,当我打开HEADER.PHP时,我不会再收到错误,因为PHP知道只包含文件FUNCTIONS.PHP ONCE

为避免出现错误,在php代码中使用include_once()代替include()函数是安全的。

如果你知道你的PHP代码很乱,那么使用include_once()会更安全,但如果你跟踪所有代码,那么可以使用include()函数。< / p>

答案 3 :(得分:0)

首先,您应该阅读PHP手册中的includeinclude_once函数参考。短篇小说 - 两个语句基本上合并原始/包含文件中的代码,因此包含文件中的所有内容都在源文件中运行/可用,无论是函数,变量,类,echo语句...(但是,include_once as已建议的名称仅包含该文件一次,如果尚未包含该文件,则无论您在其中放入多少include_once语句,都会包含该文件... ...