2016-12-25 1 views
1

Я пытаюсь получить доступ и изменить данные, которые находятся в родительском классе, который является дочерним по отношению к другому классу. Я родительский классМногоуровневое наследование в 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 I и получить данные, я получаю null. Возможно ли сделать мой класс GrandChild наследовать $c1Data = 2 и работать с ним. Я хочу также иметь возможность самостоятельно использовать классы Child и GrandParent, а не быть абстрактными.

ответ

2

Вы получаете NULL__constructor, потому что из Child класса не вызывается, и поэтому 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

 Смежные вопросы

  • Нет связанных вопросов^_^