#23150 [Opn->Bgs]: Using global $x, while $x is already global behaves in an inconsistent way

From: Date: Fri, 11 Apr 2003 06:16:01 +0000
Subject: #23150 [Opn->Bgs]: Using global $x, while $x is already global behaves in an inconsistent way
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-37551@lists.php.net to get a copy of this message
ID: 23150 Updated by: sniper@php.net Reported By: arattink at correct dot net -Status: Open +Status: Bogus Bug Type: Scripting Engine problem Operating System: Linux 2.4.16-4GB-SMP PHP Version: 4.3.1 New Comment: . Previous Comments: ------------------------------------------------------------------------ [2003-04-11 01:15:50] sniper@php.net Not bug, works just as expected. (Don't do this :) ------------------------------------------------------------------------ [2003-04-10 09:20:33] arattink at correct dot net I would expect that using $x1->f = 1234; would work the same if $x1 is declared explicitely as global or not, if it is already global, but: <? class X { var $f = 'PHP sucks'; }; $x1 = new X; $x2 = new X; $z1 = &$x1; $z2 = &$x2; { global $x1; $x1->f = 'PHP is OK!'; } { $x2->f = 'PHP is OK!'; } echo "x1.f=".$x1->f."\n"; echo "x2.f=".$x2->f."\n"; echo "z1.f=".$z1->f."\n"; echo "z2.f=".$z2->f."\n"; ?> shows this is not true. It seems that $z1 loses its reference to $x1, even though $x1 is never reassigned. Tested on php 4.2.2 and php 4.3.1, same results. List of modules: does not apply to this problem. Known workaround: don't do this... However, it can easily happen by mistake (as it did in our case). Yours sincerely, Arnoud Rattink. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23150&edit=1

« previous php.bugs (#37551) next »