我必须在PHP脚本中使用call_user_func_array()
。虽然看起来非常缓慢。那里有其他选择吗?
答案 0 :(得分: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);
另一个解决方案(可能是最好的解决方案)是让你的函数接受带参数的数组......