91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

林口县| 桂阳县| 沙田区| 汕头市| 军事| 辛集市| 喀喇沁旗| 龙川县| 威海市| 偃师市| 衡水市| 墨竹工卡县| 同德县| 南丰县| 中宁县| 谷城县| 台南县| 郎溪县| 鹤庆县| 尖扎县| 吐鲁番市| 天长市| 永昌县| 遂溪县| 普兰县| 墨江| 呼伦贝尔市| 类乌齐县| 英山县| 定结县| 河津市| 香河县| 萨嘎县| 翁源县| 宁城县| 宜兰市| 固原市| 福鼎市| 明水县| 宜宾县| 调兵山市|