基类:
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
已实例化的对象,{ {1}}显示为var_dump
。
任何想法都有什么问题?
谢谢! :)
更新
如果我在子类“null
方法中使用parent::__construct();
,那么它会生成__construct()
。这就是我添加空Fatal Error: maximum function nesting level of '100' reached, aborting!
方法的原因。再想一想如何解决这个问题?
我在源代码上也有这个:
__construct()
所以,构造函数应该已经运行了,对吧?
答案 0 :(得分:5)
您必须在子类构造函数中调用parent::__construct()
,否则不会调用父构造函数,并且该属性将不会接收其值。
答案 1 :(得分:1)
在这个示例中,你也可以省略子类的构造函数,因为它没有做任何事情,否则使用GolezTrol建议的方法