Я оказался в этой ситуации, и я просто взломал его грязно. Но мне интересно, есть ли чистый путь?вызов метода 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
.