之间有什么区别:
$callback = array(&$this, 'method');
$callback[0]->$callback[1]($args);
和
call_user_func(array(&$this, 'method'), $args);
答案 0 :(得分:2)
不,调用变量方法/函数和使用call_user_func
之间没有区别。我还没遇到过需要后者的情况。顺便说一句,您不需要通过引用传递$this
;所有对象都通过引用自动传递。
答案 1 :(得分:2)
没有区别,但我更喜欢第二个的可读性。第一个不太清楚,需要两行......
答案 2 :(得分:1)
我还没有真正看到第一个使用的示例,但它似乎有效并且应该比call_user_func()
更快,因为您没有调用另一个函数的开销。
更新:
此外,如果您启用了E_STRICT错误级别,则无法使用call_user_func()
执行此操作:
// ...
public function &example($foo)
{
$this->bar = 'foo';
return $this->bar;
}
// ...
$dummy = &$callback[0]->$callback[1]($args);
在这种情况下,call_user_func()
会触发这样的内容:
PHP严格标准:只应在第X行的php shell代码中通过引用分配变量