Вы можете вызывать любой метод в родительском классе, если он не перегружен ближе к классу экземпляра.Просто используйте $this->methodName(...)
Для немного более продвинутой магии, вот рабочий пример того, что вы, кажется, хотите:
Обратите внимание, что я не считаю это хорошей идеей
class MathStuff
{
public function multiply()
{
$total = 1;
$args = func_get_args();
foreach($args as $order => $arg)
{
$total = $total * $arg;
}
return $total;
}
}
class DangerousCode extends MathStuff
{
public function multiply()
{
$args = func_get_args();
$reflector = new ReflectionClass(get_class($this));
$parent = $reflector->getParentClass();
$method = $parent->getMethod('multiply');
return $method->invokeArgs($this, $args);
}
}
$danger = new DangerousCode();
echo $danger->multiply(10, 20, 30, 40);
По сути, это ищет метод MathStuff::multiply
в таблице поиска методов и выполняет его код на данных экземпляра из экземпляра DangerousCode
.