变量和函数范围在“includer”和“includee”之间有什么区别?
例如,这两个测试的工作方式完全相同,但我是否应该了解范围的细微之处?
档案“one.php”:
<?php
$a = 5;
include("two.php");
?>
档案“two.php:
<?php
function f($x) { return $x * 2; }
echo f($a);
?>
档案“one.php”:
<?php
$a = 5;
?>
档案“two.php:
<?php
include("one.php");
function f($x) { return $x * 2; }
echo f($a);
?>
答案 0 :(得分:3)
执行PHP文件时,它会在全局范围内启动。包含文档说明;
当包含文件时,它包含的代码会继承该变量 发生包含的行的范围。任何可用的变量 在调用文件中的那一行将在被调用的内容中可用 文件,从那时起。但是,所有函数和类 在包含文件中定义的具有全局范围。
由于当您包含第二个文件时,您处于全局范围内,因此变量范围将保持全局,其他所有内容将始终具有全局范围。换句话说,两个文件和两个文件中的所有内容都在全局范围内,两者之间的范围没有区别。
答案 1 :(得分:2)
当您包含文件时,您可以将其视为单个文件,即:
<?php
// execute commands in this file
$a = 5;
// then continue execution of include("two.php");
function f($x) { return $x * 2; }
echo f($a);
?>
<?php
// first include include("one.php");
$a = 5;
// then continue execution of two.php
function f($x) { return $x * 2; }
echo f($a);
?>
希望你能理解两者之间的区别。本质上它类似于复制然后粘贴包含文件的包含命令。
变量和函数作用域就好像它是同一个文件,只要包含的文件在“includee”中的变量或函数调用之前