我必须call_user_func_array()
在我的 PHP 脚本中使用。虽然它看起来非常慢。有没有其他选择?
问问题
2742 次
1 回答
3
使用与直接调用函数时性能存在差异call_user_func_array
,但并没有那么大(大约慢 15 倍)。除非您使用它数千次,否则您不会注意到它。
要回答您的问题,您可以自己构建一个:
function call($fn, array $args = array()){
$numArgs = count($args);
if($numArgs < 1)
return $fn();
if($numArgs === 1)
return $fn($args[0]);
if($numArgs === 2)
return $fn($args[0], $args[1]);
// ...
return call_user_func_array($fn, $args);
}
还有ReflectionFunction::invokeArgs
(和ReflectionMethod::invokeArgs
):
$reflector = new ReflectionFunction($fn);
return $reflector->invokeArgs($args);
另一种解决方案(可能是最好的解决方案)是让您的函数接受带有参数的数组......
于 2013-02-24T23:17:02.800 回答