小編給大家分享一下說一說ThinkPHP6中五花八門的中間件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司2013年成立,先為永定等服務(wù)建站,永定等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為永定企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。在ThinkPHP6中新增中間件功能,而且中間件又分很多類型的中間件,很多新手對ThinkPHP6中間件很犯難,
全局中間件:
我們下載好ThinkPHP6的框架后,在app目錄下就有一個(gè)middleware.php,我們在app目錄下定義的中間件叫做全局中間件,全局中間件是對所有應(yīng)用都生效的中間件。
應(yīng)用中間件:
那換而言之,如果我們再復(fù)制一份middleware.php放在了某個(gè)應(yīng)用下,比如index應(yīng)用,是不是就叫做應(yīng)用中間件呢,答案是對的。
控制器中間件:
如果在控制器中操作中間件,是不是就叫做控制器中間件?
路由中間件:
那可不可以在路由中也定義中間件,比如我只想讓某個(gè)請求使用某個(gè)中間件,其他的并不想使用中間件,那也就有了路由中間件。
如果同一個(gè)請求,所有類型的中間件都定義了,那執(zhí)行順序是如何呢?
全局中間件->應(yīng)用中間件->路由中間件->控制器中間件
接下來我們看一個(gè)實(shí)例。
全局中間件:
public function handle($request, \Closure $next) { echo 'app全局中間件'; return $next($request); }
應(yīng)用中間件:
public function handle($request, \Closure $next) { echo '應(yīng)用中間件'; return $next($request); }
路由中間件:
Route::rule('hello','index/hello') ->middleware(\app\middleware\Auth::class);
控制器中間件:
在使用控制器中間件之前,我們先定義好別名,在根目錄下config\middleware.php中定義別名。這個(gè)別名其實(shí)就是增加別名標(biāo)識(shí)。別名定義好后,不僅在控制器中間件可以使用,路由中間件也可以使用。
return [ 'alias' => [ 'auth2' => app\middleware\Auth2::class, ], ];
我們在這里定義別名中間件,就不需要在middleware.php中聲明了,而是通過在控制中使用別名定義:
class Index { protected $middleware = ['auth2']; public function index() { return 'index'; } public function hello() { echo 'hello方法'; } }
這個(gè)時(shí)候我們訪問hello方法,輸出結(jié)果是:
app全局中間件
應(yīng)用中間件
路由中間件
控制器中間件
hello方法
以上是“說一說ThinkPHP6中五花八門的中間件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!