Я получил защищенную переменную в классе Father
, содержимое этой переменной изменится в классе Father
но мне нужно использовать эту переменную в подклассах, то есть:
class Father { protected $body; function __construct(){ $this->body = 'test'; } } class Child extends Father{ function __construct(){ echo $this->body; } } $c = new Father(); $d = new Child();
Почему переменное body
пуста? Если я объявляю его статичным, то должен ли я объявлять все переменные как статические, если я хочу получить доступ и изменить их в подклассах?
Вы должны вызвать родительский конструктор.
class Father { protected $body; function __construct(){ $this->body = 'test'; } } class Child extends Father { function __construct(){ parent::__construct(); echo $this->body; } } $c = new Father(); $d = new Child();
Это связано с тем, что вы переопределяете функцию конструктора. Вы также должны вызвать конструктор родителя. Больше информации
class Child extends Father { function __construct() { parent::__construct(); echo $this->body; } }