访问重载的PHP属性

时间:2017-10-12 14:41:43

标签: php overloading

我看到了一些关于访问父类属性的问题(比如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。任何工作方式?

1 个答案:

答案 0 :(得分:1)

你基本上要问的是:

  

如果我覆盖一个值但仍想要旧值怎么办?

然后只有一个简单的解决方案。你创建另一个变量并将其存储在那里然后重写它。