Re: $obj = new foo() patch
| From: | Kirill Maximov | 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
Attachment: [text/x-vcard] Card for Kirill Maximov kir.vcf