//一个中间件示例
class Check
{
    public function handle($request, \Closure $next)
    {
        //中间件前置执行操作
        $response = $next($request);
        //中间件后置执行操作
        
        return $response;
    }
}thinkphp6中间件的参数和操作基本上是围绕$request请求类对象操作的,所以中间件主要用于拦截或过滤应用的HTTP请求,包括Session功能、请求缓存和多语言功能等.
中间件的实现过程用到一个很重要的设计模式:
管道(Pipeline): 它的作用是将数据通过一系列的处理操作,得到最终的目标结果.就像一条蛋糕流水线作业,一开始只有一个烤好的蛋糕胚体,然后不断给他添加各种装饰,最终得到了想要的蛋糕.
执行逻辑:
$Pipeline = app(Pipeline::class);$middleware = [
    function($data,$next){$data['step1'] = 'process 1'; return $next($data);},
    function($data,$next){$data['step2'] = 'process 2'; return $next($data);},
];thinkphp6/8 中间件的关键是了解指谁的中间:
HTTP应用执行的过程的中间
在执行启动HttpRun事件监听后,知道启动HttpEnd事件监听为止,这中间的关键节点对 Request对象进行控制调整拦截, 这里面主要知识是俩个地方: 哪些关键点, 如何进行拦截处理
哪些中间件拦截点(一个拦截点是可以方多个中间件的,依次执行)?
Route::rule('hello/:name','hello')->middleware(\app\middleware\Auth::class);,先判断了权限然后再完成路由跳转.