本篇文章為大家帶來了關於thinkphp的相關知識,其中主要介紹了事件綁定、監聽、訂閱的相關問題,事件相比較中間件的優勢是事件比中間件更加精準定位,下面一起來看一下,希望對大家有幫助。
推薦學習:《PHP影片教學》
事件相比較中間件的優點是事件比中介軟體更精準定位(或說粒度更細),並且更適合一些業務場景的擴展。例如,我們通常會遇到用戶註冊或登入後需要做一系列操作,透過事件系統可以做到不侵入原有程式碼完成登入的操作擴展,降低系統的耦合性的同時,還能完成業務的需求。
官網的解釋,沒有實例,這裡簡單的告訴大家如何使用,會使用之後再去發現更多操作
php think make:listener UserLogin
一般建議直接在事件定義檔(event.php)中定義對應事件的監聽。
return [ 'bind' => [ 'UserLogin' => 'app\event\UserLogin', // 更多事件绑定 ], 'listen' => [ 'UserLogin' => ['app\listener\UserLogin'], // 更多事件监听 ], ];
php think make: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');
推薦學習:《PHP影片教學》
以上是完全掌握thinkphp的事件綁定、監聽與訂閱的詳細內容。更多資訊請關注PHP中文網其他相關文章!