#20676 [Ver->WFx]: serialize(): Reinitialization of a reference
| From: | sniper@php.net | Date: | Fri, 09 Apr 2004 00:06:19 +0000 |
| Subject: | #20676 [Ver->WFx]: serialize(): Reinitialization of a reference | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-57826@lists.php.net to get a copy of this message | ||
ID: 20676
Updated by: sniper@php.net
Reported By: alex_boyer at hotmail dot com
-Status: Verified
+Status: Wont fix
Bug Type: Class/Object related
Operating System: *
PHP Version: 4CVS
New Comment:
"Fixed" in PHP 5 (where you don't even need to play around with
references..)
Previous Comments:
------------------------------------------------------------------------
[2002-12-09 06:57:51] andi@php.net
This shouldn't really part of the scripting engine bugs but addressed
to the authors of serialize() and unserialize(). Re-classifying.
------------------------------------------------------------------------
[2002-11-27 09:32:28] alex_boyer at hotmail dot com
i thought that PHP count references on data before destroys it. This is
not the case. This is why $GLOBALS['ref'] is null isn't it ?
------------------------------------------------------------------------
[2002-11-27 09:22:51] alex_boyer at hotmail dot com
I try to keep reference on all instances of a class. Even, unserialized
one.
<?php
class A {
var $x=1;
function __wakeup(){
$GLOBALS['ref'] =& $this;
}
}
function set(){
//Serialize information
$a =& new A();
$a->x=2;
$data = serialize($a);
//Unserialize
$b =& unserialize($data); // i try without '&'
$result= $b === $GLOBALS['ref']; // $result == true;
echo "VALUE IN SET: {$b->x} \n"; // Echo 2
}
set();
echo "VALUE OUT SET: {$GLOBALS['ref']->x}\n"; //echo nothing,
$GLOBALS['ref'] is now NULL !
?>
I have read all docs, my eyes burns me but i really cannot understand.
I look in database too.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=20676&edit=1