tp6的中间键

Posted sky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tp6的中间键相关的知识,希望对你有一定的参考价值。

php think make:middleware Test

1.通过php think 内置命令生成一个中间键,这个指令会 app/middleware目录下面生成一个Test中间件。

<?php
declare (strict_types = 1);

namespace app\\middleware;

class Test
{
    /**
     * 处理请求
     *
     * @param \\think\\Request $request
     * @param \\Closure       $next
     * @return Response
     */
    public function handle($request, \\Closure $next)
    {
        echo "I\'m a Test middleware ";

        return $next($request);
    }
}

1.中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。

2.中间件handle方法的返回值必须是一个Response对象。

// 中间件配置
return [
    // 别名或分组
    \'alias\'    => [
        \'test\' => [\\app\\middleware\\Test::class],
    ],
    // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
    \'priority\' => [],
];

1.config/middleware.php配置文件中可以定义中间件别名,设置中间件运行顺序

<?php
// 全局中间件定义文件
return [
    // 全局请求缓存
    // \\think\\middleware\\CheckRequestCache::class,
    // 多语言加载
    // \\think\\middleware\\LoadLangPack::class,
    // Session初始化
    // \\think\\middleware\\SessionInit::class
    \\app\\middleware\\Test::class,
];

1.app/middleware.php 文件中定义应用级别的中间件设置

protected $middleware = ["test"];

1.在控制器中,通过成员变量定义中间件,对当前控制器生效

Route::rule(\'hello/:name\',\'hello\')
    ->middleware([\\app\\middleware\\Auth::class, \\app\\middleware\\Check::class]);

 

思考

  1.中间键的执行顺序是全局中间件->应用中间件->路由中间件->控制器中间件

  2.配置文件中可以定义中间件的别名和设置执行顺序

  3.多个中间键通过数组的方式注册,如果需要传参数也可以通过数组的方式

  4.路由中间件是对应某个路由请求

  5.如果在应用和控制器中都注册了中间件,中间件会处理多次

  

以上是关于tp6的中间键的主要内容,如果未能解决你的问题,请参考以下文章

TP6 事件绑定监听订阅

TP6 事件绑定监听订阅

tp6api接口加密中间件

tp6api接口加密中间件

tp6简单实现消息队列

tp6简单实现消息队列