从 PHP 5.6 开始,您可以使用参数解包作为 call_user_func_array 的替代方案,并且通常快 3 到 4 倍。
<?php
function foo ($a, $b) {
return $a + $b;
}
$func = 'foo';
$values = array(1, 2);
call_user_func_array($func, $values);
// 返回 3
$func(...$values);
// 返回 3
?>
来自 https://gist.github.com/nikic/6390366 的基准测试
cufa 使用 0 个参数花费了 0.43453288078308 秒
switch 使用 0 个参数花费了 0.24134302139282 秒
unpack 使用 0 个参数花费了 0.12418699264526 秒
cufa 使用 5 个参数花费了 0.73408579826355 秒
switch 使用 5 个参数花费了 0.49595499038696 秒
unpack 使用 5 个参数花费了 0.18640494346619 秒
cufa 使用 100 个参数花费了 5.0327250957489 秒
switch 使用 100 个参数花费了 5.291127204895 秒
unpack 使用 100 个参数花费了 1.2362589836121 秒