Я действительно не видел первый используемый пример, но он кажется действительным и должен быть быстрее, чем call_user_func()
, поскольку у вас нет лишних затрат на вызов другой функции.
UPDATE:
Кроме того, вы не можете сделать это с call_user_func()
, если вы включили уровень ошибки E_STRICT:
// ...
public function &example($foo)
{
$this->bar = 'foo';
return $this->bar;
}
// ...
$dummy = &$callback[0]->$callback[1]($args);
В этом случае call_user_func()
вызовет что-то вроде этого:
Строгие стандарты PHP: только переменные должны назначаться по ссылке в коде оболочки php в строке X