#20676 [Opn]: Reinitialization of a reference
| From: | alex_boyer at hotmail dot com | Date: | Wed, 27 Nov 2002 15:46:30 +0000 |
| Subject: | #20676 [Opn]: Reinitialization of a reference | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-25971@lists.php.net to get a copy of this message | ||
ID: 20676
User updated by: alex_boyer@hotmail.com
Reported By: alex_boyer@hotmail.com
Status: Open
Bug Type: Variables related
Operating System: All
PHP Version: 4.2.3
New Comment:
But why doesn'it work with this code:
<?php
class A {
var $x=1;
}
function set(){
$a =& new A();
$a->x=2;
$GLOBALS['ref'] =& $a;
echo "VALUE IN SET: {$GLOBALS['ref']->x} \n";
} //$a destroyed. $GLOBALS['ref'] not.
echo "START\n";
set();
echo "VALUE OUT SET: {$GLOBALS['ref']->x}\n";
?>
I really think that it's a bug
Previous Comments:
------------------------------------------------------------------------
[2002-11-27 09:32:28] alex_boyer@hotmail.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@hotmail.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