PHP 4.0 Bug #7515 Updated: very weird, magic, invisible referencing

From: Date: Sat, 16 Dec 2000 18:40:39 +0000
Subject: PHP 4.0 Bug #7515 Updated: very weird, magic, invisible referencing
Groups: php.dev 
Request: Send a blank email to php-dev+get-41603@lists.php.net to get a copy of this message
ID: 7515 Updated by: waldschrott Reported By: waldschrott@php.net Old-Status: Open Status: Assigned Bug Type: Scripting Engine problem Assigned To: zeev Comments: assigned to zeev, as discussed we either need a) a permanent fix b) a permanent deep copy function and understand this effect as a feature and users will eventually have to use deep copies for some containers Previous Comments: --------------------------------------------------------------------------- [2000-10-28 10:25:28] waldschrott@php.net This code is pretty self-explanatory... Uncommenting the noticed (*[0]) line, causes the object contained ('root') in the instance of 'obj' to be referenced to whatever, function test() uses a copy $o_copy but reference-counting fails and the contained object 'root' is somehow referenced to the original object in the global scope. After having uncommented *[0] try to uncomment *[1] what should break the reference again, that made me assuming this all is caused by reference counting... <?php class obj { function method() {} } function test($o_copy) { //$o_copy->root=&$o_copy->root; // *[1] $o_copy->root->set_in_copied_o=TRUE; var_dump($o_copy);?><BR><?php } $o->root=new obj(); //$o->root->method(); // *[0] uncomment this line and weirdness starts var_dump($o);?><BR><?php test($o); var_dump($o); ?> --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=7515

« previous php.dev (#41603) next »