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 に答える