Kun*_*tau 36 php variables class parent
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();
Run Code Online (Sandbox Code Playgroud)
问题:如何在孩子中显示父变量?预期结果将回应'父母bb'
Geo*_*ins 64
echo $this->bb;
Run Code Online (Sandbox Code Playgroud)
变量是继承的,不是私有的,因此它是当前对象的一部分.
以下是针对您的请求的其他信息,以获取有关使用的更多信息parent:::
parent::当您想要从父类向方法添加额外功能时使用.例如,想象一个Airplane类:
class Airplane {
private $pilot;
public function __construct( $pilot ) {
$this->pilot = $pilot;
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我们想要创建一种同样具有导航器的新型飞机.您可以扩展__construct()方法以添加新功能,但仍然可以使用父级提供的功能:
class Bomber extends Airplane {
private $navigator;
public function __construct( $pilot, $navigator ) {
$this->navigator = $navigator;
parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以遵循DRY开发原则,但仍然提供您想要的所有功能.
随着parent::$bb;您尝试检索使用 的值定义的静态常量$bb。
相反,请执行以下操作:
echo $this->bb;
Run Code Online (Sandbox Code Playgroud)
注意:parent::_construct如果 B 是唯一调用它的类,则不需要调用。简单地不要在 B 类中声明 __construct 。