我在中间看到了一个 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!
有关更多信息,您可以查看这些链接:
关于php - Laravel 中的闭包是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348081/