2013-05-15 49 views
2

我发现自己在这种情况下,我只是肮脏的黑客入侵。但我想知道,有没有一些干净的方法?调用祖父母方法没有调用父母和没有修改父母/祖父母

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

我想通了这一点之前,我完成了问题,但我决定无论如何将它张贴:

基地::的getValue()似乎是正确的解决方案,PHP似乎做一些神奇的出现,让base类当从其子中调用时具有$value属性集。