繁体   English   中英

Laravel 中的闭包是什么?

[英]What is Closure in Laravel?

我在中间看到了一个 Laravel 函数:

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

    return $next($request);
}

什么是Closure ,它有什么作用?

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

如果你看下面的例子:

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

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

我们首先在handle函数中添加一个Closure参数。 这将提示我们handle函数采用Closure

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

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

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

句柄函数现在看起来像

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

我们现在还需要修改Closure本身以获取参数。 我们通过简单地向函数添加一个参数来实现。 然后我们将该变量传递给echo

该功能现在看起来像

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

这将与Hello World!呼应Hello World!

有关更多信息,您可以查看以下链接:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM