2017-11-17 7 views
1

iはlaravel初心者として働いていますこんにちは、私は関数は以下の通りですmiddlewereと 内の1つの機能を見ました:何Laravelの閉鎖とは何ですか?

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) 
    { 
     return redirect('/home'); 
    } 

    return $next($request); 
} 

閉鎖があり、それが何をするのでしょうか?

+0

クロージャーがある:

機能は、今、あなたはこれらのリンクをチェックアウトすることができます詳細についてはHello World!

をエコーし​​ます

handle(function($value){ echo $value; }); 

のように見えます関数cont変数 '$ next'を使っています。そして '$ next 'の前の' Closure'は型ヒントです。あなたの次の質問をしますか? – C2486

+0

私はそれを手に入れません。あなたはブリーフで説明していただけますか? –

+0

Vishal、Laracastにサインアップし、チュートリアルに従って詳細な説明をしてください。 – Option

答えて

6

Closureは無名関数です。クロージャは、コールバックメソッドとしてよく使用され、関数内のパラメータとして使用できます。

次の例取る場合:

function handle(Closure $closure) { 
    $closure(); 
} 

handle(function(){ 
    echo 'Hello!'; 
}); 

を我々はClosureパラメータにhandle機能を追加することによって開始します。これは、handle関数がClosureになることを意味します。

次に、handle関数を呼び出し、最初のパラメータとして関数を渡します。その後、echo 'Hello!'

Closureにパラメータを渡すことも可能であるだろう、我々は与えられたClosureを実行するためにPHPを伝えるhandle機能で$closure();を使用することにより

handle関数のClosureコールをパラメータを渡すように変更することで、これを行うことができます。この例では文字列を渡しますが、これは任意の変数にすることができます。

ハンドル機能は現在、我々は今もパラメータを取るためにClosure自体を変更する必要が

function handle(Closure $closure) { 
    $closure('Hello World!'); 
} 

のように見えます。関数にパラメータを追加するだけで、そのようになります。そして、その変数をechoに渡します。

http://php.net/manual/en/functions.anonymous.php

http://php.net/manual/en/class.closure.php