0

基类:

class A {

    public x;
    public y;

    public function __construct {

        $this->x = new X();
        $this->y = new Y();
    }
}

X

class X extends A {

    public function __construct {}

    public function job() {

        echo 'x working!';
    }
}

Y

class Y extends A {

    public function __construct {}

    public function job() {

        var_dump($this->x);    // NULL, Why???

        $this->x->job();
    }
}

问题:当我x->job()从类内部调用时Y,我完全无法访问X已经实例化的对象,并var_dump显示它是null.

有什么想法有什么问题吗?

谢谢!:)

更新:

如果我parent::__construct();在子类的__construct()方法中使用,那么它将生成Fatal Error: maximum function nesting level of '100' reached, aborting!. 这就是我添加那些空__construct()方法的原因。任何想法再次如何解决?

我在源代码上也有这个:

$base = new A();

那么,构造函数应该已经运行了,对吧?

4

2 回答 2

5

您必须调用parent::__construct()chil 类的构造函数,否则不会调用父构造函数并且属性不会收到其值。

于 2012-09-12T12:30:04.813 回答
1

在这个例子中,你也可以省略子类的构造函数,因为它不做任何事情,否则使用 GolezTrol 建议的方法

于 2012-09-12T12:31:35.210 回答