我在我的代码中使用它:
call_user_func_array ( array ($controller, $method ), $this->params );
Run Code Online (Sandbox Code Playgroud)
但我发现下面的代码做了同样的事情:
$controller->$method($this->params);
Run Code Online (Sandbox Code Playgroud)
这两个版本有什么区别吗?
谢谢
亚当拉马丹
他们的工作方式相似.唯一显着的区别是$controller->$nonexistant()会产生致命错误.虽然call_user_func_array只有E_WARNING失败不应该$method存在.
有趣的事实.如果你的$ controller有一个闭包$方法,那么你实际上必须结合两种方法:
call_user_func_array ( $controller->$method, $this->params );
Run Code Online (Sandbox Code Playgroud)
他们不一样.
如果$method是showAction和$this->params是array(2, 'some-slug'),那么第一次调用将相当于:
$controller->showAction(2, 'some-slug');
Run Code Online (Sandbox Code Playgroud)
而第二个是:
$controller->showAction(array(2, 'some-slug'));
Run Code Online (Sandbox Code Playgroud)
您要使用哪一个取决于系统其余部分的工作方式(特别是您的控制器).我个人可能会选择第一个.
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |