php - Laravel 中的闭包是什么?

标签 php 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是一个匿名函数。闭包通常用作回调方法,并且可以用作函数中的参数。

如果你看下面的例子:

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

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

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

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

通过在 handle 函数中使用 $closure();,我们告诉 PHP 执行给定的 Closure,然后它会 echo “你好!”

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

句柄函数现在看起来像

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

关于php - Laravel 中的闭包是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348081/

相关文章:

php - 使用 PHP 代码仅显示数据库中列的某些值

javascript - 如何从表单元素的值中的数组中获取数组元素?

php - Laravel 5.0 : Querying and displaying child objects in view from nested relationship

javascript - 如何在laravel中实现select2

php - 将javascript变量设置为php变量而不刷新页面

php - 如何使用从 JSON 到 PHP 的参数查询数据库?

javascript - 如何从route/web.php获取变量到 Controller

javascript - Laravel 5 VueJS 不工作

php - 根据每个请求将数据传递给 Laravel 5.2 中的布局

php - 如何在 Laravel 之外使用 Laravel 的 IOC 容器进行方法注入(inject)