2017-11-17 17 views
1

은 내가 laravel 초급로 일하고 있어요 안녕하세요 난 함수가 다음과 같습니다 middlewere 및 에서 하나 개의 함수를 보았다 : 무엇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; }); 

처럼 보인다 함수 계속 여기에 변수'$ next'가 있습니다. 그리고'$ next '매개 변수 앞에있는'Closure '는 타입 힌팅입니다. 다음 질문에 물어보십시오. – C2486

+0

나는 그것을 얻지 않는다. 너 브리프로 설명해 줄 수 있니? –

+0

Vishal, Laracasts에 가입하고 깊이있는 설명을 위해 자습서를 따르십시오. – Option

답변

6

Closure은 익명의 기능입니다. 클로저는 콜백 메소드로 자주 사용되며 함수의 매개 변수로 사용될 수 있습니다.

다음과 같은 예를 가지고가는 경우 :

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

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

우리는 Closure 매개 변수에게 handle 기능을 추가하여 시작합니다. 이렇게 입력하면 handle 함수에 Closure이 걸립니다.

그런 다음 handle 함수를 호출하고 함수를 첫 번째 매개 변수로 전달합니다. handle$closure(); 함수를 사용하여

우리는 주어진 Closure을 실행할 PHP 말해되는 것 다음 echo 'Hello!'

그것은 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