Php 以任何方式访问父级';谁的属性被子对象覆盖?
是否有办法访问被子级覆盖的父级值 父项::$prop:应为静态。和:self::$prop一样Php 以任何方式访问父级';谁的属性被子对象覆盖?,php,subclass,class-instance-variables,Php,Subclass,Class Instance Variables,是否有办法访问被子级覆盖的父级值 父项::$prop:应为静态。和:self::$prop一样 class base { public $name = 'base'; public function __construct() { echo $this->name . "\n"; echo self::$name . "\n"; } } class sub extends base { publi
class base {
public $name = 'base';
public function __construct()
{
echo $this->name . "\n";
echo self::$name . "\n";
}
}
class sub extends base {
public $name = 'sub';
public function __construct()
{
parent::__construct(); // output: sub
// Fatal error
echo $this->name . "\n"; // output: sub
echo parent::$name . "\n"; // Fatal error
}
}
new sub();
我不知道这是不是最好的方法,但它是有效的。有关更多信息,请查看以下链接:
base中的$name不是静态的,因此您不能自己访问它::$prop,另外,当您使用与父变量相同的名称声明非静态变量时,它将被覆盖,并且无法访问base one
public function __construct()
{
parent::__construct(); // output: sub
echo $this->name . "\n"; // output: sub
echo $this->getParentProp('name'); //output: base
}
public function getParentProp($name)
{
$parent = get_class_vars(get_parent_class($this));
return $parent[$name];
}