我有一个带有以下代码的文件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构造只处理变量和函数而忽略其他东西。什么是正确的,请指导。 谢谢
答案 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)
您最好了解include
和include_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手册中的include和include_once函数参考。短篇小说 - 两个语句基本上合并原始/包含文件中的代码,因此包含文件中的所有内容都在源文件中运行/可用,无论是函数,变量,类,echo语句...(但是,include_once as已建议的名称仅包含该文件一次,如果尚未包含该文件,则无论您在其中放入多少include_once语句,都会包含该文件... ...