Вызовите parent :: function внутри call_user_func или call_user_func_array

1

Предположим, что у меня есть следующий метод класса:

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]);
}

Этот код не работает. Мне было интересно, в чем причина этого (классы не являются гражданами первого класса?)

Теги:

1 ответ

1
Лучший ответ

Использовать котировки

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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню