2013-05-15 2 views
2

Я оказался в этой ситуации, и я просто взломал его грязно. Но мне интересно, есть ли чистый путь?вызов метода grandparent без вызова родителя и без изменения родителя/дедушки и бабушки

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 набор свойств, когда вызывается его дочерним элементом.

Смежные вопросы