oop — PHP Получить переменные родительского класса из дочернего класса, созданного в родительском конструкторе

С помощью следующего фрагмента кода, почему $this->foo вернуть NULL в конструкторе дочернего класса B? Из того, что я прочитал, у меня сложилось впечатление, что дочерний класс наследует все свои родительские переменные и методы.

$a = new A();

class A {
protected $foo;

public function __construct() {
$this->foo = "Hello World";

$b = new B();
}
}

class B extends A {
public function __construct() {
var_dump($this->foo);
}
}

Выбранный ответ этот вопрос кажется, предлагает $this->foo должен быть доступен.

Это потому, что B создается внутри родительского класса? Если это так, как я могу получить доступ к переменной в дочернем классе?

-1

Решение

Ты делаешь new A() а потом отдельно делаешь new B(), У вас есть два совершенно независимых экземпляра объекта. Неважно, что один экземпляр происходит в конструкторе AЭто совершенно не имеет значения. Это также не имеет значения, что B продолжается A, У вас есть два независимых объекта, и экземпляры объектов не разделяют данные неявным образом, чего вы, вероятно, ожидаете.

поскольку Bконструктор переопределяет конструктор своего родителя, он не выполняет Aкод, так что, по сути, ничего не происходит, когда вы создаете новый B,

2

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

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

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