ID: 28325 Updated by: [EMAIL PROTECTED] Reported By: antonr at game dot permonline dot ru Status: Closed Bug Type: Class/Object related -Operating System: Irrelevant +Operating System: * -PHP Version: 5CVS-2004-06-30 (dev) +PHP Version: 4.3.9, 5.0.1 Assigned To: moriyoshi New Comment:
Fixed in 4.3.10 & 5.0.1 Previous Comments: ------------------------------------------------------------------------ [2004-07-05 10:00:23] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2004-06-30 04:52:47] [EMAIL PROTECTED] Correct URL: http://www.voltex.jp/patches/bug28325-preliminary.patch.diff ------------------------------------------------------------------------ [2004-06-30 04:51:34] [EMAIL PROTECTED] Analysed. Preliminary patch can be found here: http://www.voltex.jp/patches/ ------------------------------------------------------------------------ [2004-05-08 12:15:23] antonr at game dot permonline dot ru but if change the line $a->myclass2->myclass1 = $a; to $a->myclass2->myclass1 = &$a; serialization/unserialization works fine ------------------------------------------------------------------------ [2004-05-08 12:12:30] antonr at game dot permonline dot ru Description: ------------ I have one object with property "myclass1", referenced to second object. And property "myclass2" of second object, referenced to first object. When I serialize the first object and unserialize the result string, I get three objects: two copies of first object and a copy of second object. Reproduce code: --------------- <?php class MyClass1 { public $myclass2; public $number; } class MyClass2 { public $myclass1; } $a = new MyClass1; $a->number = 1; $a->myclass2 = new MyClass2; $a->myclass2->myclass1 = $a; $b = unserialize(serialize($a)); $b->number = 2; echo $b->number; echo "\n"; echo $b->myclass2->myclass1->number; ?> Expected result: ---------------- If serialization was made correctly, then we would get that $b and $b->myclass2->myclass1 are references to one instance, and the output of script must be: 2 2 Actual result: -------------- The actual output is 2 1 this means, that $b and $b->myclass2->myclass1 aren't references to the same instance ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28325&edit=1