首頁  >  文章  >  php框架  >  完全掌握thinkphp的事件綁定、監聽與訂閱

完全掌握thinkphp的事件綁定、監聽與訂閱

WBOY
WBOY轉載
2022-04-13 12:56:383686瀏覽

本篇文章為大家帶來了關於thinkphp的相關知識,其中主要介紹了事件綁定、監聽、訂閱的相關問題,事件相比較中間件的優勢是事件比中間件更加精準定位,下面一起來看一下,希望對大家有幫助。

完全掌握thinkphp的事件綁定、監聽與訂閱

推薦學習:《PHP影片教學

事件是什麼

事件相比較中間件的優點是事件比中介軟體更精準定位(或說粒度更細),並且更適合一些業務場景的擴展。例如,我們通常會遇到用戶註冊或登入後需要做一系列操作,透過事件系統可以做到不侵入原有程式碼完成登入的操作擴展,降低系統的耦合性的同時,還能完成業務的需求。

TP6中事件的使用

官網的解釋,沒有實例,這裡簡單的告訴大家如何使用,會使用之後再去發現更多操作

# 1.事件監聽

  • 命令列產生監聽php think make:listener UserLogin

一般建議直接在事件定義檔(event.php)中定義對應事件的監聽。

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
];

2.事件訂閱

  • 命令列php think make:subscribe User
    預設會產生app\subscribe\ User類,或者你可以指定完整類名生成。
<?php
namespace app\subscribe;

class User
{
    public function onUserLogin($user)
    {
        // UserLogin事件响应处理
    }

    public function onUserLogout($user)
    {
        // UserLogout事件响应处理
    }
}

3.自訂訂閱

如果希望自訂訂閱方式(或方法規格),可以定義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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除