Reference oddities...
| From: | Arjan Haverkamp | Date: | Sat, 26 Aug 2000 17:47:29 +0000 |
| Subject: | Reference oddities... | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-13797@lists.php.net to get a copy of this message | ||
Hi,
I boiled a problem I'm having down to the code below:
<?
class Main {
function Main() {
$this->test1 = new Test1(&$this, "first test");
$this->test2 = new Test2(&$this, "second test");
}
}
class Test1 {
function Test1($super, $name) {
$this->super = $super;
$this->name = $name;
}
}
class Test2 {
function Test2($super, $name) {
$this->super = $super;
$this->name = $name;
}
}
$m = new Main();
print "\$m->test1->super->test2->name: " .
$m->test1->super->test2->name
. "<BR>";
print "\$m->test2->super->test1->name: " .
$m->test2->super->test1->name
. "<BR>";
?>
When I run this script (PHP4.0.0,Apache1.3.12 on Mandrake 7.0), I get
this output:
$m->test1->super->test2->name:
$m->test2->super->test1->name: first test
The classes Test1 and Test2 both have a constructor that is called with
a reference
to the super-class Main. The output I was expecting is:
$m->test1->super->test2->name: second test
$m->test2->super->test1->name: first test
Of course, if I change the code to:
<?
class Main {
function Main() {
$this->test2 = new Test2(&$this, "second test");
$this->test1 = new Test1(&$this, "first test");
}
}
class Test1 {
function Test1($super, $name) {
$this->super = $super;
$this->name = $name;
}
}
class Test2 {
function Test2($super, $name) {
$this->super = $super;
$this->name = $name;
}
}
$m = new Main();
print "\$m->test1->super->test2->name: " .
$m->test1->super->test2->name
. "<BR>";
print "\$m->test2->super->test1->name: " .
$m->test2->super->test1->name
. "<BR>";
?>
I get:
$m->test1->super->test2->name: second test
$m->test2->super->test1->name:
What am I doing wrong? A reference is just like a pointer, right?
Shouldn't the classes Test1
and Test2 be able to reference all members of their super-class Main,
even if they were instantiated
later than themselves???
Thanks for any explanation!
Arjan
--
ººººººººººººººººººººººººººººººººººººººººººººººººº
Arjan Haverkamp aka: void
Borneolaan 21 url: http://www.avoid.org
1217 GX Hilversum email: void@avoid.org
The Netherlands "There's no gravity,
+31-35-6234660 the earth just sucks..."
ººººººººººººººººººººººººººººººººººººººººººººººººº