編輯:(修訂版)PHP真實的SESSION對象
也許我的問題是不夠清楚。好吧,讓我們這樣說吧:
$arr["a"] = 10;
var_dump($arr);
$arr["b"] =& $arr["a"];
var_dump($arr);
第一的var_dump回報:
array
'a' => int 10
,而第二個返回:
array
'a' => &int 10
'b' => &int 10
如果我未設置($改編[「一「])它將返回:
array
'b' => int 10
規則是,當2個或更多變量「指向」相同的內容時,var_dump將顯示帶有&字符的引用(&)。
在$ _SESSION的情況下,即使使用register_long_arrays =關閉 $ _SESSION仍顯示參考。所以很明顯,其他變量也指向相同的內容。
換句話說,如果我取消設置($ _ SESSION)還有可以鏈接到其他變量的地方。在上面的例子中,當我創建一個鏈接時,我仍然可以恢復該內容,如:$ arr [「z」] = & $ arr [「b」 ]。
所以,我原來的問題是,有誰知道哪個是其他變量?這樣的變量很可能不存在......但我想知道爲什麼PHP內部顯示這個引用。
謝謝
(原題:)
當你在PHP中創建一個會話,例如:
session_start();
$_SESSION["name"] = "my name";
與轉儲全局變量:
var_dump($GLOBALS);
你會看到類似這樣的:
'HTTP_SESSION_VARS' => &
array
'name' => string 'my name' (length=7)
'_SESSION' => &
array
'name' => string 'my name' (length=7)
'HTTP_SERVER_VARS' =>
array
...
正如你可以看到,這兩個變量$ GLOBAL [HTTP_SESSION_VARS]和$ _SESSION是 引用到其他對象的內容......難道有誰知道這是個啥玩藝?
從理論上講,如果我取消設置這兩個變量,以某種方式必須能夠訪問 內容...任何線索?
謝謝!
我一直在看Zend的PHP源代碼,很有意思的是,在主/ php_variables.c所有超全局初始化,但SESSION,它有它在內線/會話/ session.c自己的文件。到目前爲止,我還沒有線索,如果可能的話。 – lepe 2010-03-04 07:18:09