Когда я использую свойства родительского класса, он возвращает NULL
Я понятия не имею, почему это происходит, Пример кода:
class Foo
{
public $example_property;
public function __construct(){
$this->example_property = $this->get_data();
}
public function get_data() {
return 22; // this is processed dynamically.
}
}
class Bar extends Foo
{
public function __construct(){}
public function Some_method() {
return $this->example_property; // Outputs NULL
}
}
На самом деле это происходит, когда я устанавливаю значения свойств с constructor
, Но если я установлю значения статически (например: public $example_property = 22
, Не вернется NULL
больше
Это происходит потому, что родительский конструктор должен вызываться явно:
class Bar extends Foo
{
public function __construct() {
parent::__construct();
}
public function Some_method() {
return $this->example_property; // Outputs NULL
}
}
Но присмотритесь — если вы не объявите Bar
конструктор, родительский должен быть выполнен. Может быть, вы не показываете нам полный код?
Итак, если у вас есть __construct
в дочернем классе и хотите использовать родительский конструктор — вы должны вызвать его явно, как я уже сказал parent::__construct();
,
Если у вас нет __construct
метод в дочернем классе, родительский класс будет вызван.
Других решений пока нет …