我看到一个 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
,然后输出“Hello!”
还可以将参数传递给Closure
。我们可以通过更改handle
函数中的Closure
调用来传递参数。在本例中,我只传递一个字符串,但这可以是任何变量。
现在,handle
函数看起来像:
function handle(Closure $closure) {
$closure('Hello World!');
}
现在我们还需要修改Closure
本身,以便接受参数。我们只需向函数添加参数即可。然后将该变量传递给echo
。
函数现在看起来像这样:
handle(function($value){
echo $value;
});
这将会回显Hello World!
如需了解更多信息,请查看以下链接:
$next
包含的函数。而在参数$next
前面的Closure
是类型提示。请问您有什么问题? - Niklesh Raut