我看到了一些关于访问父类属性的问题(比如PHP Accessing Parent Class Variable),但我似乎在一个前卫的案例中挣扎(我实际上并不需要那种模式,但好奇心,你知道...... ☺):
如果子类重写父类变量并仍想访问它,该怎么办?
示例:
class A {
protected $x = 'a';
}
class B extends A {
protected $x = 'b';
public function showX() {
var_dump(array(
'this->x' => $this->x,
'parent->x' => '??',
}
}
$b = new B();
$b->showX();
不依赖于父级的getX()
方法(并且在B级中使用parent::getX()
,或者只使用$this->getX()
,如果B没有覆盖getX
方法),如何获得如下结果:
this->x: 'b'
parent->x: 'a'
正如http://php.net/manual/pl/keyword.parent.php#94177所述,使用parent::$x
不会起作用,因为它会查找不存在的静态属性$x
。任何工作方式?
答案 0 :(得分:1)
你基本上要问的是:
如果我覆盖一个值但仍想要旧值怎么办?
然后只有一个简单的解决方案。你创建另一个变量并将其存储在那里然后重写它。