中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

thinkphp的事件綁定、監聽和訂閱怎么使用

發布時間:2022-04-13 13:35:25 來源:億速云 閱讀:181 作者:iii 欄目:編程語言

這篇文章主要介紹了thinkphp的事件綁定、監聽和訂閱怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇thinkphp的事件綁定、監聽和訂閱怎么使用文章都會有所收獲,下面我們一起來看看吧。

事件是什么

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

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');

關于“thinkphp的事件綁定、監聽和訂閱怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“thinkphp的事件綁定、監聽和訂閱怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 耒阳市| 鄢陵县| 阿合奇县| 鹤岗市| 海伦市| 苗栗县| 岐山县| 大邑县| 嘉定区| 尉犁县| 桐柏县| 玉龙| 五大连池市| 屏东市| 上虞市| 清丰县| 西林县| 泾阳县| 陵水| 屯门区| 杂多县| 岚皋县| 永登县| 固安县| 阿勒泰市| 个旧市| 临桂县| 宿迁市| 安新县| 洛扎县| 仙桃市| 城步| 泸州市| 德安县| 巴里| 皋兰县| 将乐县| 迁安市| 淮滨县| 蒙自县|