PHP中的多级继承

问题描述:

我试图访问和修改父类中的数据,这些父类是另一个类的子级。 我有一个父类PHP中的多级继承

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并使用它。我还希望能够自己使用ChildGrandParent类,而不是抽象的。

你得到NULL因为Child类的__constructor不会被调用,这就是为什么c1Data属性是NOT SET。你应该明确地呼吁Child__constructor

class GrandChild extends Child { 
    protected $c2Data; 

    public function __construct() { 
     // here 
     parent::__construct(); 

     $this->c2Data = parent::getData(); 
    } 

    public function getData() { 
     return $this->c2Data; 
    } 
} 
+0

谢谢@u_mulder现在的工作。愚蠢的错误。 – Lexx