本篇文章給大家?guī)砹岁P(guān)于thinkphp的相關(guān)知識(shí),其中主要介紹了事件綁定、監(jiān)聽、訂閱的相關(guān)問題,事件相比較中間件的優(yōu)勢是事件比中間件更加精準(zhǔn)定位,下面一起來看一下,希望對(duì)大家有幫助。
推薦學(xué)習(xí):《thinkphp》
事件是什么
事件相比較中間件的優(yōu)勢是事件比中間件更加精準(zhǔn)定位(或者說粒度更細(xì)),并且更適合一些業(yè)務(wù)場景的擴(kuò)展。例如,我們通常會(huì)遇到用戶注冊或者登錄后需要做一系列操作,通過事件系統(tǒng)可以做到不侵入原有代碼完成登錄的操作擴(kuò)展,降低系統(tǒng)的耦合性的同時(shí),還能完成業(yè)務(wù)的需求。
TP6中事件的使用
官網(wǎng)的解釋,沒有實(shí)例,這里簡單的告訴大家如何使用,會(huì)使用之后再去發(fā)現(xiàn)更多操作
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
1.事件監(jiān)聽
- 命令行生成監(jiān)聽 php think make:listener UserLogin
一般建議直接在事件定義文件(Event.php)中定義對(duì)應(yīng)事件的監(jiān)聽。
return [ 'bind' => [ 'UserLogin' => 'appeventUserLogin', // 更多事件綁定 ], 'listen' => [ 'UserLogin' => ['applistenerUserLogin'], // 更多事件監(jiān)聽 ], ];
2.事件訂閱
- 命令行php think make:subscribe User
默認(rèn)會(huì)生成appsubscribeUser類,或者你可以指定完整類名生成。
<?php namespace appsubscribe; class User { public function onUserLogin($user) { // UserLogin事件響應(yīng)處理 } public function onUserLogout($user) { // UserLogout事件響應(yīng)處理 } }
3.自定義訂閱
如果希望自定義訂閱方式(或者方法規(guī)范),可以定義subscribe方法實(shí)現(xiàn)。
<?php namespace appsubscribe; use thinkEvent; class User { public function onUserLogin($user) { // UserLogin事件響應(yīng)處理 } public function onUserLogout($user) { // UserLogout事件響應(yīng)處理 } public function subscribe(Event $event) { $event->listen('UserLogin', [$this,'onUserLogin']); $event->listen('UserLogout',[$this,'onUserLogout']); } }
然后在事件定義文件注冊事件訂閱者
return [ 'bind' => [ 'UserLogin' => 'appeventUserLogin', // 更多事件綁定 ], 'listen' => [ 'UserLogin' => ['applistenerUserLogin'], // 更多事件監(jiān)聽 ], 'subscribe' => [ 'appsubscribeUser', // 更多事件訂閱 ], ];
事件觸發(fā)
// 觸發(fā)UserLogin事件 用于執(zhí)行用戶登錄后的一系列操作 Event::trigger('UserLogin'); 或者使用助手函數(shù) event('UserLogin');
推薦學(xué)習(xí):《thinkphp》
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦