我正在尝试访问和修改父类中的数据,该父类是另一个类的子类。 我有一个父类
class GrandParent {
protected $data = 1;
public function __construct() {}
public function getData() {
return $this->data;
}
}
以下是我的第一级孩子
class Child extends GrandParent {
protected $c1Data;
public function __construct() {
$this->c1Data = parent::getData();
$this->c1Data = 2;
}
public function getData() {
return $this->c1Data;
}
}
如果我尝试实例化Child
类并执行getData()
,我得到2这是正常的。我还有另一个继承Child
的课程。
class GrandChild extends Child {
protected $c2Data;
public function __construct() {
$this->c2Data = parent::getData();
}
public function getData() {
return $this->c2Data;
}
}
问题是,如果我尝试实例化GrandChild
我并获取数据,我将获得null
。是否可以让我的GrandChild
类继承$c1Data = 2
并使用它。我还希望能够自己使用Child
和GrandParent
类,而不是抽象的。
答案 0 :(得分:2)
您收到NULL
,因为__constructor
类的Child
未被调用,这就是c1Data
属性未设置的原因。您应该明确要求Child
__constructor
:
class GrandChild extends Child {
protected $c2Data;
public function __construct() {
// here
parent::__construct();
$this->c2Data = parent::getData();
}
public function getData() {
return $this->c2Data;
}
}