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