#24485 [Com]: $a = $b; become $a=&$b; when I use a function

From: Date: Tue, 21 Oct 2003 02:13:14 +0000
Subject: #24485 [Com]: $a = $b; become $a=&$b; when I use a function
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-49259@lists.php.net to get a copy of this message
ID: 24485 Comment by: horikawa at secnet dot co dot jp Reported By: gomez at efrei dot fr Status: Verified Bug Type: Scripting Engine problem Operating System: * PHP Version: 4.3.3RC2-dev, 5.0.0b2-dev New Comment: PHP 4.3.4RC2(Windows 2000) is reproduced. Reproduce code: --------------- <?php class foo { function none() {}} $a = array(new foo()); var_dump($a); $a[0]->none(); var_dump($a); ?> Previous Comments: ------------------------------------------------------------------------ [2003-07-17 14:03:27] moriyoshi@php.net The following piece produces a similar result: <?php class foo {} $a = array(new foo()); function show(&$this) { return 5; } show($a[0]); var_dump($a); ?> ------------------------------------------------------------------------ [2003-07-09 18:19:42] sniper@php.net Same result with both PHP 4.3.3RC2-dev and 5.0.0b2-dev. ------------------------------------------------------------------------ [2003-07-03 10:17:47] gomez at efrei dot fr Description: ------------ In an array, classes become classes references when I use a function member. Because of that, I don't copy it anymore, I just produce more pointers to it. (see the '&' in the var dump) If you comment the magic line, the bug won't appear. Tested under linux (php 4.1.2 and 4.2.3) and windows (php 4.3.2) Reproduce code: --------------- <?php class AAAAA { var $value; function AAAAA() {} function show() { return 5; } } $A = array(new AAAAA()); $A[0]->show(); /* magic line */ $A[0]->value = 'A'; $B = $A; $B[0]->value = 'B'; echo $A[0]->value.$B[0]->value; echo "\n"; var_dump( $A ); ?> Expected result: ---------------- AB array(1) { [0]=> object(aaaaa)(1) { ["value"]=> string(1) "A" } } Actual result: -------------- BB array(1) { [0]=> &object(aaaaa)(1) { ["value"]=> string(1) "B" } } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24485&edit=1

« previous php.bugs (#49259) next »