【发布时间】:2017-12-24 20:14:25
【问题描述】:
我在 stack 上阅读了其他关于使用 call_user_func_array 与仅调用函数的答案,但我仍然无法收集何时应该使用前者。我知道当您不知道传递了多少个参数时,您可能想使用call_user_func_array,因此您可以这样做:$args = func_get_args(); ...但如果要使用它们,您是否总是需要知道参数在函数中?
以下两项工作,我假设第一项的开销较小。
$format = new Foo;
$method = 'somemethod';
$arg = 'somevalue';
if (method_exists($format, $method)) {
return $format->$method($arg);
}
对
return call_user_func_array(array($format, $method), array($arg));
什么时候可以真正从使用call_user_func_array 中受益?
【问题讨论】:
-
我已经在静态类中看到并使用了它,其中已经导入了具体类的实例,并且希望通过静态方法访问具体类。
-
当您的 PHP 版本不支持存储函数名称调用时(5.4?)。当不支持可变参数(5.6)时,也经常使用
func_get_args。但是到目前为止,我已经看到这是一个偏好问题。保持一致是关键。 -
现在通过参数解包它有点使这个函数静音,因为这是答案中的 argument:stackoverflow.com/questions/18526060/… 假设它只是归结为如果你想支持旧php 版本。
-
@Chay22 究竟什么是“存储函数名称调用”?