您好,登錄后才能下訂單哦!
這篇文章主要介紹了thinkphp的事件綁定、監(jiān)聽和訂閱怎么使用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇thinkphp的事件綁定、監(jiān)聽和訂閱怎么使用文章都會(huì)有所收獲,下面我們一起來看看吧。
事件相比較中間件的優(yōu)勢(shì)是事件比中間件更加精準(zhǔn)定位(或者說粒度更細(xì)),并且更適合一些業(yè)務(wù)場(chǎng)景的擴(kuò)展。例如,我們通常會(huì)遇到用戶注冊(cè)或者登錄后需要做一系列操作,通過事件系統(tǒng)可以做到不侵入原有代碼完成登錄的操作擴(kuò)展,降低系統(tǒng)的耦合性的同時(shí),還能完成業(yè)務(wù)的需求。
官網(wǎng)的解釋,沒有實(shí)例,這里簡(jiǎn)單的告訴大家如何使用,會(huì)使用之后再去發(fā)現(xiàn)更多操作
命令行生成監(jiān)聽 php think make:listener UserLogin
一般建議直接在事件定義文件(event.php)中定義對(duì)應(yīng)事件的監(jiān)聽。
return [ 'bind' => [ 'UserLogin' => 'app\event\UserLogin', // 更多事件綁定 ], 'listen' => [ 'UserLogin' => ['app\listener\UserLogin'], // 更多事件監(jiān)聽 ], ];
命令行php think make:subscribe User
默認(rèn)會(huì)生成app\subscribe\User類,或者你可以指定完整類名生成。
<?php namespace app\subscribe; class User { public function onUserLogin($user) { // UserLogin事件響應(yīng)處理 } public function onUserLogout($user) { // UserLogout事件響應(yīng)處理 } }
如果希望自定義訂閱方式(或者方法規(guī)范),可以定義subscribe方法實(shí)現(xiàn)。
<?php namespace app\subscribe; use think\Event; 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']); } }
然后在事件定義文件注冊(cè)事件訂閱者
return [ 'bind' => [ 'UserLogin' => 'app\event\UserLogin', // 更多事件綁定 ], 'listen' => [ 'UserLogin' => ['app\listener\UserLogin'], // 更多事件監(jiān)聽 ], 'subscribe' => [ 'app\subscribe\User', // 更多事件訂閱 ], ];
// 觸發(fā)UserLogin事件 用于執(zhí)行用戶登錄后的一系列操作 Event::trigger('UserLogin'); 或者使用助手函數(shù) event('UserLogin');
關(guān)于“thinkphp的事件綁定、監(jiān)聽和訂閱怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“thinkphp的事件綁定、監(jiān)聽和訂閱怎么使用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。