请查看以下代码:
$_SESSION["process_y"] = new Process();
$process_y = $_SESSION["process_y"];
$process_y->name = "John";
$process_y = $_SESSION["process_y"];
echo " name is ".$process_y->name;
// Outputs "name is John"
我从SESSION变量中获取一个对象。然后我修改了这个对象的一个成员,但从未将它保存回会话。由于某些原因我不知道,修改后的对象会被保存在会话中,就好像被提取的对象是“指针”一样。
我在php文档中找不到任何解释此行为的参考。
注意:register_globals为OFF。
答案 0 :(得分:2)
由于$ _SESSION变量是全局变量,因此将保存对它的任何突变。除此之外,$ _SESSION跨越各个请求(作为会话应该),因此行为符合预期。
答案 1 :(得分:2)
该行为未被记录,并且与全局_SESSION-Array无关。在某种程度上你是对的:它是一个指针。请查阅手册以获取完整说明:http://www.php.net/manual/en/language.oop5.references.php