【发布时间】:2014-12-16 10:30:16
【问题描述】:
用下面的代码sn-p,为什么$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 question 的选定答案似乎表明$this->foo 应该是可访问的。
是因为 B 是在其父类中构造的吗?如果是这种情况,如何访问子类中的变量?
【问题讨论】:
-
你能解释一下为什么你需要你的类在它的构造函数中创建它自己的实例吗?在任何情况下,我都看不出这是个好主意。
-
我并不特别需要类来创建自身的实例,但是当父类被实例化时,我需要实例化另一个类来做其他事情,但可以访问第一个类中设置的变量
-
只要您创建实例的类不是创建它的类的派生类,您就可以使用
parent::__construct()做到这一点。
标签: php oop inheritance