PHP从父构造函数中构造的子类中获取父类变量


PHP Get parent class variables from child class constructed in the parent constructor

使用以下代码片段,为什么$this->foo在B子类构造函数中返回NULL?从我读到的内容来看,我的印象是子类继承了它所有的父变量和方法

$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是从其父类内部构造的吗?如果是这种情况,我如何访问子类中的变量?

您正在执行new A(),然后分别执行new B()。您有两个完全独立的对象实例。在A的构造函数中发生一个实例化并不重要,这完全无关。BA的扩展也不重要。您有两个独立的对象,并且对象实例不会隐式共享数据,这似乎是您所期望的。

由于B的构造函数覆盖了其父级的构造函数,因此它也不会执行A的任何代码,因此在实例化新的B时基本上不会发生任何事情。