Re: $obj = new foo() patch

From: 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 {
    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.
--- Andi Gutmans <andi@zend.com> http://www.zend.com/

« previous php.dev (#37671) next »