Silex PHP マイクロフレームワークは、自動型ヒントに基づいてコールバック インジェクションを実行します。たとえば、Silex では、次のように Closure 引数に任意の引数を指定できます。
$app->get('/blog/show/{postId}/{commentId}', function ($commentId, $postId) {
//...
});
$app->get('/blog/show/{id}', function (Application $app, Request $request, $id) {
//...
});
// following works just as well - order of arguments is not important
$app->get('/blog/show/{id}', function (Request $request, Application $app, $id) {
//...
});
どうすればいいですか?パラメータの型を文字列として取得することに興味はありません。「文字列なし」の完全自動ソリューションを探しています。言い換えると、
考えられる引数の数:
$possible_arguments = [ new Class_A(), new Class_B(), new Class_C(), new Another_Class, $some_class ];
任意の数の任意の引数を持つクロージャーの場合、上記で定義されたものを一度だけ含めることができます。
$closure = function (Class_B $b, Another_Class, $a) { // Do something with $a and $b };
クロージャーを呼び出すには、一致する引数のみを取得する必要があります。
// $arguments is now [$possible_arguments[1], $possible_arguments[3]] call_user_func_array($closure, $arguments);