#28325 [Asn]: serialization of objects
| From: | moriyoshi@php.net | Date: | Wed, 30 Jun 2004 02:52:48 +0000 |
| Subject: | #28325 [Asn]: serialization of objects | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-61535@lists.php.net to get a copy of this message | ||
ID: 28325
Updated by: moriyoshi@php.net
Reported By: antonr at game dot permonline dot ru
Status: Assigned
Bug Type: Class/Object related
-Operating System: Win32
+Operating System: Irrelevant
-PHP Version: 5CVS-2004-05-08 (dev)
+PHP Version: 5CVS-2004-06-30 (dev)
Assigned To: moriyoshi
New Comment:
Correct URL:
http://www.voltex.jp/patches/bug28325-preliminary.patch.diff
Previous Comments:
------------------------------------------------------------------------
[2004-06-30 04:51:34] moriyoshi@php.net
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