我是在我的代码中使用这样的:
call_user_func_array (array ($controller, $method), $this->params);
,但我发现下面的代码做同样的事情:
$controller->$method($this->params);
有两个版本之间有什么区别?
感谢
亚当·拉马丹
我是在我的代码中使用这样的:
call_user_func_array (array ($controller, $method), $this->params);
,但我发现下面的代码做同样的事情:
$controller->$method($this->params);
有两个版本之间有什么区别?
感谢
亚当·拉马丹
它们不一样。
如果$method
是showAction
和$this->params
是array(2, 'some-slug')
,那么第一次调用将相当于:
$controller->showAction(2, 'some-slug');
而第二个是:
$controller->showAction(array(2, 'some-slug'));
你想使用哪一个取决于系统的其他部分如何工作(尤其是您的控制器)。我个人可能会与第一。
他们正在做同样的事情,但第二种形式是更短,更清晰,速度更快。喜欢它。
他们一样工作。唯一重要的区别是$controller->$nonexistant()
会产生致命错误。而call_user_func_array
失败,只有一个E_WARNING应该$method
不存在。
有趣的事实。如果您的$控制器包含关闭$方法,那么您实际上必须结合两种方法:
call_user_func_array ($controller->$method, $this->params);
啊我看到了,所以如果我们想使用参数,第一个将是($ number,$ string)第二个$ data ['0'] $ data ['1'],那么它们的性能如何?有什么区别? ( 重大的 ) ?如果没有,那么也许我应该坚持第一个。因为是我的申请得到了相当的看法。 – 2011-03-20 15:09:41
任何性能差异将只是一小部分操作码,所以不要担心这一点。 – Charles 2011-03-20 16:35:27