Laravel中间件中的'return $ next($ request)'是做什么的?

ofm*_*oon 2 closures middleware laravel

请尊重我是编程和Laravel的新手,所以这个问题对于大多数人来说似乎有些奇怪。
但是我认为这是stackoverflow的目的,所以:

当我使用命令创建一个新的中间件时,php artisan make:middleware setLocale已经有了handle-function并带有以下代码:

return $next($request);

我想知道这行到底是做什么的。

小智 8

$next($request)只是将请求传递给下一个处理程序。假设您添加了一个用于检查年龄限制的中间件。

public function handle($request, Closure $next)
{
    if ($request->age <= 18) {
        return redirect('home');
    }

    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

当年龄小于 18 时,它会重定向到 home 但当请求通过条件时,应该对请求做什么?它会将它传递给下一个处理程序。可能传递给注册用户方法或任何视图。


Chr*_*n C 5

在文档中对此进行了解释:

要将请求更深地传递到应用程序中(允许中间件“传递”),请使用$ request调用$ next回调。

最好将中间件设想为一系列HTTP请求必须经过“层”才能到达您的应用程序。每一层都可以检查请求,甚至完全拒绝它。

https://laravel.com/docs/5.8/middleware#defining-middleware