Предположим, что у меня есть следующий метод класса:
public function handleException(fn, args) {
try {
call_user_func_array(fn, args);
} catch (SomeException $e) {
//handle
}
}
function fn1(x, y) {
return $this->handleException(parent::fn1, [x, y]);
}
function fn2(x, y) {
return $this->handleException(parent::fn2, [x, y]);
}
Этот код не работает. Мне было интересно, в чем причина этого (классы не являются гражданами первого класса?)
Использовать котировки
class A
{
function f1($arg)
{
echo $arg;
}
}
class B extends A
{
function test()
{
call_user_func_array('parent::f1', ['param1']);
}
}
$b = new B();
$b->test();