$mtd = 'test';
$args = array('a','b');
array_pad($args, 8, null);
return $mtd($args[0],$args[1],$args[2],$args[3],$args[4],$args[5],$args[6],$args[7]);
2)あなたは引数をカウントし、それぞれに異なるハードコードされた関数を呼び出すことができます。
$mtd = 'test';
$args = array('a','b');
switch(count($args)){
case 0: return $mtd();
case 1: return $mtd($args[0]);
case 2: return $mtd($args[0],$args[1]);
case 3: return $mtd($args[0],$args[1],$args[2]);
case 4: return $mtd($args[0],$args[1],$args[2],$args[3]);
case 5: return $mtd($args[0],$args[1],$args[2],$args[3],$args[4]);
default: return call_user_func_array($mtd, $args); // slow, but safe
}
3)最後に、Drupalがこれを解決するのと同じことをすることができます。 PHPコードを生成してキャッシュします。生成されたコードは特定の数の引数で動作するようにハードコードされていますが、キャッシュをクリアすると、必要に応じて引数の数を増減できます。プラス、それは可能な速い方法です。
ありがとう、私はcall_user_ *のものについて決める必要があるときにこれを考慮に入れます –