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 中的闭包是啥?的主要内容,如果未能解决你的问题,请参考以下文章