调用祖父母方法而不调用父级而不修改父级/祖父级

时间:2013-05-15 11:57:51

标签: php override prestashop

我发现自己处于这种状况,我只是把它弄脏了。但我想知道,有一些干净的方式吗?

class base{
    var $value;
    public function getValue(){
        return 'returned from base: '. $value;
    }
}

class object extends base{
    public function getValue(){
        $this->value = 'wrong value';
        return parent::getValue();
    }
}


class overwrite extends object{
    public function getValue(){
        $this->value = 'right value';

        ?????

    }
}

$o = new overwrite;
echo $o->getValue();

我允许编辑的所有内容都是overwrite。如果我调用parent::getValue(),则值会被错误的值覆盖。如果我将该类命名为base::getValue(),则基类将不会设置$value属性。

1 个答案:

答案 0 :(得分:1)

在我完成这个问题之前我想出了这个,但我还是决定发布它:

base :: getValue()似乎是正确的解决方案,php似乎在那里做了一些魔术,所以base类具有$value属性集,当从它的子进行调用时。