--TEST-- Bug #79031: Session unserialization problem --FILE-- sharedProp = $prop; } public function __set($key, $value) { $this->$key = $value; } public function serialize() { return serialize(get_object_vars($this)); } public function unserialize($data) { $ar = unserialize($data); if ($ar === false) { return; } foreach ($ar as $k => $v) { $this->__set($k, $v); } } } // Shared object that acts as property of two another objects stored in session $testPropertyObj = new stdClass(); $testPropertyObj->name = 'test'; // Two instances of \SerializableClass that shares property $sessionObject = [ 'obj1' => new SerializableClass($testPropertyObj), 'obj2' => new SerializableClass($testPropertyObj), ]; session_start(); $_SESSION = $sessionObject; $sessionString = session_encode(); session_decode($sessionString); echo $sessionString; echo "\n\n"; var_dump($_SESSION); ?> --EXPECT-- obj1|C:17:"SerializableClass":65:{a:1:{s:10:"sharedProp";O:8:"stdClass":1:{s:4:"name";s:4:"test";}}}obj2|C:17:"SerializableClass":28:{a:1:{s:10:"sharedProp";r:3;}} array(2) { ["obj1"]=> object(SerializableClass)#4 (1) { ["sharedProp"]=> object(stdClass)#5 (1) { ["name"]=> string(4) "test" } } ["obj2"]=> object(SerializableClass)#6 (1) { ["sharedProp"]=> object(stdClass)#5 (1) { ["name"]=> string(4) "test" } } }