[英]PHP. by using “global $var” to get a global variable, do we get a copy of the global var or get a reference to that global variable?
global $user
vs $user = $GLOBALS['user']
通過使用“ global $ var”獲取全局變量,我們是獲取全局var的副本還是獲取對該全局變量的引用?
global $user;
$ user是全局對象的副本還是對實際全局變量的引用?
謝謝。
通過使用global $var
,名為“ var”的全局變量將被導入到函數的本地范圍中(通過創建引用來完成)。
這與$GLOBALS
不同,后者是一個超全局變量。 無論范圍如何,它始終無處不在。
但是,這與參考不同。 如果您真的想了解變量及其對變量的引用,建議使用Derick Rethans的PDF: PHP參考:深入研究 (PDF)。
通過與global $var;
您總是有一個引用全局變量的局部變量。
以下代碼:
$var = 1;
function test() {
global $var;
$var++;
}
test();
echo $var;
等效於:
$var = 1;
function test() {
$GLOBALS['var']++;
}
test();
echo $var;
引用$ GLOBALS的文檔 :
包含對所有變量的引用的關聯數組,這些變量當前在腳本的全局范圍內定義。 變量名是數組的鍵。
一個簡單的測試用例:
$foo = "foo";
echo $GLOBALS["foo"]; // foo
echo $GLOBALS["foo"] = "bar"; // bar
echo $foo; // bar
都不行 編譯器將該變量名稱的使用解析為全局范圍內的相應變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.