什么是Laravel关闭?

时间:2017-11-17 10:07:40

标签: laravel laravel-5 closures

您好我正在作为laravel初学者工作,我在中间看到了一个功能  功能如下:

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

    return $next($request);
}

Closure是什么,它做了什么?

1 个答案:

答案 0 :(得分:24)

Closure是一个匿名函数。闭包通常用作回调方法,可用作函数中的参数。

如果您采用以下示例:

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

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

我们首先在Closure函数中添加handle参数。这将提示我们handle函数需要Closure

然后我们调用handle函数并将函数作为第一个参数传递。

$closure();函数中使用handle,我们告诉PHP执行给定的Closure,然后echo 'Hello!'

也可以将参数传递给Closure。我们可以通过更改Closure函数中的handle调用来传递参数。在这个例子中,我只是传递一个字符串,但这可以是任何变量。

句柄功能现在看起来像

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

我们现在还需要修改Closure本身来获取参数。我们只需在函数中添加一个参数即可。然后我们将该变量传递给echo

该功能现在看起来像

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

将回复Hello World!

有关详细信息,请查看以下链接:

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

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