Re: $obj = new foo() patch

From: Date: Fri, 10 Nov 2000 10:44:19 +0000
Subject: Re: $obj = new foo() patch
References: 1  Groups: php.dev php.qa 
Request: Send a blank email to php-dev+get-37663@lists.php.net to get a copy of this message
Andi Gutmans wrote: > > Guys, > > I have submitted a patch to the Zend Engine which is considered > experimental. It is supposed to fix the problem with the $obj = new foo() > statement when the constructor of foo() assigns $this by reference to other > symbol table entries. Basically, the Zend Engine will explicitly assign new > foo() by reference to $obj because this is pretty much the only thing which > makes sense in this case. > NOTE: If you do $obj2 = $obj1 = new foo(), "$obj2 = $obj1" will still > assign by value and not by reference. > This patch is only meant to fix this problematic bug which has about 5 > entries in the bugs database. > Please check it out. If there are any problems/concerns with this bug it is > best to leave it out for 4.0.4 but it should not harm anyone's scripts. > The following bugs are probably solved now: 6529, 6896, 7454, 7455, 7482 > Anyway, please grab a fresh CVS tree and check that your OOP code still > works :) > Thanks! > Andi This code doesn't work no more as it did before: <?php class B { function bb() { global $a; echo "b"; $a->aa(); } } class A { function aa() { echo "A"; } } function t() { global $a; $a = new A; $a->aa(); global $b; $b = new B; $b->bb(); } t(); ?> Output should be AbA. I get: Ab Fatal error: Call to a member function on a non-object in /h/home/kir/public_html/a.php on line 18 -- With best regards, Kirill Maximov QA team.

Attachment: [text/x-vcard] Card for Kirill Maximov kir.vcf
« previous php.dev (#37663) next »