温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

说一说ThinkPHP6中五花八门的中间件

发布时间:2021-01-26 11:46:05 来源:亿速云 阅读:237 作者:小新 栏目:编程语言

小编给大家分享一下说一说ThinkPHP6中五花八门的中间件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在ThinkPHP6中新增中间件功能,而且中间件又分很多类型的中间件,很多新手对ThinkPHP6中间件很犯难,

全局中间件:

我们下载好ThinkPHP6的框架后,在app目录下就有一个middleware.php,我们在app目录下定义的中间件叫做全局中间件,全局中间件是对所有应用都生效的中间件。

应用中间件:

那换而言之,如果我们再复制一份middleware.php放在了某个应用下,比如index应用,是不是就叫做应用中间件呢,答案是对的。

控制器中间件:

如果在控制器中操作中间件,是不是就叫做控制器中间件?

路由中间件:

那可不可以在路由中也定义中间件,比如我只想让某个请求使用某个中间件,其他的并不想使用中间件,那也就有了路由中间件。

如果同一个请求,所有类型的中间件都定义了,那执行顺序是如何呢?

全局中间件->应用中间件->路由中间件->控制器中间件

接下来我们看一个实例。

全局中间件:

 public function handle($request, \Closure $next)
    {
        echo 'app全局中间件';
        return $next($request);
    }

应用中间件:

public function handle($request, \Closure $next)
    {
        echo '应用中间件';
        return $next($request);
    }

路由中间件:

Route::rule('hello','index/hello')
->middleware(\app\middleware\Auth::class);

控制器中间件:

在使用控制器中间件之前,我们先定义好别名,在根目录下config\middleware.php中定义别名。这个别名其实就是增加别名标识。别名定义好后,不仅在控制器中间件可以使用,路由中间件也可以使用。

return [
    'alias' => [
        'auth2' => app\middleware\Auth2::class,
    ],
];

我们在这里定义别名中间件,就不需要在middleware.php中声明了,而是通过在控制中使用别名定义:

class Index
{
    protected $middleware = ['auth2'];
    public function index()
    {
       return 'index';
    }
    public function hello()
    {
       echo 'hello方法';
    }
}

这个时候我们访问hello方法,输出结果是:

app全局中间件

应用中间件

路由中间件

控制器中间件

hello方法

以上是“说一说ThinkPHP6中五花八门的中间件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI