global $user
vs $user = $GLOBALS['user']
通过使用“global $ var”获取全局变量,我们是获取全局变量的副本还是获取对该全局变量的引用?
global $user;
$ user是全局对象的副本还是对实际全局变量的引用?
感谢。
答案 0 :(得分:2)
通过使用global $var
,名为“var”的全局变量将被导入到函数的本地范围内(通过创建引用来完成)。
这与超级全局变量$GLOBALS
不同。无论范围如何,这总是无处不在。
然而,这与参考文献不同。如果您真的想了解变量以及变量的引用方式,我建议使用Derick Rethans的PDF:References in PHP: An In-Depth Look(PDF)。
答案 1 :(得分:1)
通过将其与global $var;
一起使用,您总是有一个引用全局变量的局部变量。
以下代码:
$var = 1;
function test() {
global $var;
$var++;
}
test();
echo $var;
相当于:
$var = 1;
function test() {
$GLOBALS['var']++;
}
test();
echo $var;
答案 2 :(得分:0)
包含引用的关联数组,用于当前在脚本全局范围内定义的所有变量。变量名是数组的键。
一个简单的测试用例:
$foo = "foo";
echo $GLOBALS["foo"]; // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo; // bar
答案 3 :(得分:0)
都不是。编译器将该变量名的用法解析为全局范围内的相应变量。