私は、パーサーがどの関数を動的に呼び出すかを決定する PHP で、次のような構造を作成しています。
// The definition of what to call
$function_call_spec = array( "prototype" => "myFunction",
"parameters" => array( "first_par" => "Hello",
"second_par" => "World"));
// Dispatch
$funcPrototype = $function_call_spec["prototype"];
$funcPrototype(); // Here we call function 'myFunction'.
これはすべてうまくてダンディです。しかし、次のステップでは、パラメーターを渡します。これは、私がやりたい方法で可能かどうかはわかりません。驚くことはありませんが、最近のスクリプト言語でできることは次のとおりです。
次のようにパラメータを関数に渡すことができます。
// Here we call function 'myFunction' with the array of parameters.
$funcPrototype( $function_call_spec["parameters"] );
ただし、明確な引数などを使用して「myFunction」を適切に宣言したい:
function myFunction( $first_par, $second_par )
{
}
質問は次のとおりです-パラメーター配列をループするだけで、関数にパラメーターを動的に渡す方法はありますか?
明確にするために、私はこのようにしたくありません:
$funcPrototype( $function_call_spec["parameters"]["first_par"],
$function_call_spec["parameters"]["second_par"] );
これには、私のコードが myFunction に関する詳細を静的に知る必要があるため、これは全体のアイデアに反します。
代わりに、おそらく次のような方法でそれをやりたいと思います:
// Special magic PHP function which can be used for invoking functions dynamically
InvokeFunction( $funcPrototype, $function_call_spec["parameters"] );
その結果、 myFunction が呼び出され、配列内のすべてのパラメーターがプロトタイプ内の個々のパラメーター変数に渡されます。
どんなコメントでも大歓迎です。
よろしく。
/R
PS: この投稿のコードは、タイプミスなどについてテストされていません。