Laravel 中的闭包是啥?

Posted

技术标签:

【中文标题】Laravel 中的闭包是啥?【英文标题】:What is Closure in Laravel?Laravel 中的闭包是什么? 【发布时间】:2018-05-01 01:53:41 【问题描述】:

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

public function handle($request, Closure $next, $guard = null)

    if (Auth::guard($guard)->check())
    
       return redirect('/home');
     

    return $next($request);

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

【问题讨论】:

闭包是由变量 $next 包含的函数。参数$next 之前的Closure 是类型提示。问下一个问题? 我不明白。你能简单解释一下吗? 你需要先检查一下:php.net/manual/en/functions.anonymous.php 好的,我现在别无选择.. 好的! ,该链接对我有用..感谢您的努力! 【参考方案1】:

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

如果你看下面的例子:

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


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

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

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

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

也可以将参数传递给Closure。我们可以通过更改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

【讨论】:

以上是关于Laravel 中的闭包是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中的闭包参数是如何传入的

laravel中的路由

在 Laravel 4 中将数据传递给闭包

Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的

laravel中的mergeBindings是啥意思

Laravel 中的控制台路由是啥?它是如何工作的? [关闭]