2017-03-08 6 views
0

私は匿名関数の世界には初めてです。PHPの匿名関数へのパラメタ

$this->app->singleton(VideoServiceInterface::class, function($app) { 
     statement1; 
     statement2; 
     .........  
    }); 

私は上記のコードスニペットをどこかで見つけました。 $ appのパラメータがどこから来たのか、コーダーはそれを匿名関数にどのように渡したのですか? singleton()方法は、型の引数を受け入れ

​​3210

答えて

1

まず、別のコンテキストでいくつかのステートメントを実行するためのゲートとして無名関数を考える必要があります。

これは、関数宣言を逆転させるようなものです。

例えば、ここで関数を呼び出す/宣言する伝統的な方法は次のとおりです。匿名関数の場合

// Declare a function . 
function foo($parameter) 
{ 
    // here we are executing some statements 

} 

// Calling the function 
echo foo(); 

、私たちはどこかの関数を呼び出している、そしてクライアントに関数を宣言する責任を動かしますユーザー。

たとえば、新しいパッケージを作成しているのであれば、具体的なオブジェクトとしてパッケージを実行したくないため、クライアントのユーザーに宣言して適切なステートメントを実行する権限を与えます彼の必要性どこかと呼ばれる - あなたはappオブジェクトに属している$this->app->singletonメソッドのソースコードを参照した場合、あなたの例では

function foo($parameter, $callback) 
{ 
    echo $parameter . "\n"; 

    // here we are calling the function 
    // leaving the user free to declare it 
    // to suit his needs 
    $callback($parameter); 
} 

// here the declaration of the function 
echo foo('Yello!', function ($parameter) { 
    echo substr($parameter, 0, 3); 
}); 

は、あなたは、多くの場合、 callbackと呼ばれ-which機能を見つけます。

0

$appはあなただけで、通常のユーザ定義関数のよう$aまたは$bまたは何を使用することができ、関数に渡されているものにアクセスするだけの引数でありますcallableは、文字列関数名または無名関数です。

singleton()メソッドは、関数がこの例では$app、または上記の$variableとして使用できる何かをこの関数に渡します。