Не удается получить доступ к свойствам родительского класса

Когда я использую свойства родительского класса, он возвращает 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 больше

1

Решение

Это происходит потому, что родительский конструктор должен вызываться явно:

class Bar extends Foo
{
public function __construct() {
parent::__construct();
}


public function Some_method() {
return $this->example_property; // Outputs NULL
}
}

Но присмотритесь — если вы не объявите Bar конструктор, родительский должен быть выполнен. Может быть, вы не показываете нам полный код?

Итак, если у вас есть __construct в дочернем классе и хотите использовать родительский конструктор — вы должны вызвать его явно, как я уже сказал parent::__construct();,

Если у вас нет __construct метод в дочернем классе, родительский класс будет вызван.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]