2017-11-17 24 views
1

Hallo arbeite ich als Laravel Anfänger und ich sah eine Funktion in middlewere und die Funktion unten:Was ist Schließung in Laravel?

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

    return $next($request); 
} 

Was Closure ist und was tut sie?

+0

Closure ist ein Funktion variert durch Variable hier '$ next'. Und 'Closure' vor dem Parameter' $ next' ist Typhinweis. Stellen Sie Ihre nächste Frage? – C2486

+0

ich verstehe es nicht. Kannst du das bitte in Kürze erklären? –

+0

Vishal, melde dich bei Laracasts an und folge ihren Tutorials für ausführliche Erklärungen. – Option

Antwort

6

Eine Closure ist eine anonyme Funktion. Closures werden oft als Callback-Methoden verwendet und können als Parameter in einer Funktion verwendet werden.

Wenn Sie das folgende Beispiel nehmen:

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

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

Wir beginnen mit einem Closure Parameter die handle Funktion hinzufügen. Dies wird uns Hinweis geben, dass die handle Funktion eine Closure übernimmt.

Wir rufen dann die handle Funktion auf und übergeben eine Funktion als ersten Parameter.

von $closure(); in der handle Funktion sagen wir PHP die gegebene Closure die dann echo 'Hello!'

Es ist auch möglich auszuführen Parameter in eine Closure passieren. Wir können dies tun, indem wir den Closure Aufruf in der handle Funktion ändern, um einen Parameter weiterzugeben. In diesem Beispiel werde ich nur eine Zeichenfolge übergeben, aber dies kann eine beliebige Variable sein.

Der Griff Funktion sieht nun wie

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

Wir haben jetzt auch die Closure ändern müssen sich die Parameter zu übernehmen. Dazu fügen wir einfach einen Parameter zur Funktion hinzu. Und dann übergeben wir diese Variable an die echo.

Die Funktion sieht nun wie

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

Welche Hello World!

Weitere Informationen echo werden Sie diese Links überprüfen können:

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

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