Re: $obj = new foo() patch
| From: | Andi Gutmans | Date: | Fri, 10 Nov 2000 11:50:31 +0000 |
| Subject: | Re: $obj = new foo() patch | ||
| References: | 1 | Groups: | php.dev php.qa |
| Request: | Send a blank email to php-dev+get-37671@lists.php.net to get a copy of this message | ||
I have removed the patch "yet again" until I can study your bug report more.
This is starting to annoy me :)
Andi
At 01:44 PM 11/10/00 +0300, Kirill Maximov wrote:
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 {--- Andi Gutmans <andi@zend.com> http://www.zend.com/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.