class A {
private $aa;
protected $bb = 'parent bb';
function __construct($arg) {
//do something..
}
private function parentmethod($arg2) {
//do something..
}
}
class B extends A {
function __construct($arg) {
parent::__construct($arg);
}
function childfunction() {
echo parent::$bb; //Fatal error: Undefined class constant 'bb'
}
}
$test = new B($some);
$test->childfunction();
问题: 如何在 child 中显示父变量? 预期结果将回显“父 bb”
最佳答案
echo $this->bb;
变量是继承的,不是私有(private)的,所以是当前对象的一部分。
以下是响应您关于使用 parent::
的更多信息的请求的附加信息:
当您希望向父类的方法添加额外功能时,请使用parent::
。例如,想象一个 Airplane
类:
class Airplane {
private $pilot;
public function __construct( $pilot ) {
$this->pilot = $pilot;
}
}
现在假设我们要创建一种也有导航器的新型飞机。您可以扩展 __construct() 方法以添加新功能,但仍可以使用父级提供的功能:
class Bomber extends Airplane {
private $navigator;
public function __construct( $pilot, $navigator ) {
$this->navigator = $navigator;
parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
}
}
这样就可以关注DRY principle了开发,但仍然提供您想要的所有功能。
关于PHP访问父类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456939/