溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

thinkphp的事件綁定、監(jiān)聽和訂閱怎么使用

發(fā)布時(shí)間:2022-04-13 13:35:25 來源:億速云 閱讀:160 作者:iii 欄目:編程語言

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

事件是什么

事件相比較中間件的優(yōu)勢(shì)是事件比中間件更加精準(zhǔn)定位(或者說粒度更細(xì)),并且更適合一些業(yè)務(wù)場(chǎng)景的擴(kuò)展。例如,我們通常會(huì)遇到用戶注冊(cè)或者登錄后需要做一系列操作,通過事件系統(tǒng)可以做到不侵入原有代碼完成登錄的操作擴(kuò)展,降低系統(tǒng)的耦合性的同時(shí),還能完成業(yè)務(wù)的需求。

TP6中事件的使用

官網(wǎng)的解釋,沒有實(shí)例,這里簡(jiǎn)單的告訴大家如何使用,會(huì)使用之后再去發(fā)現(xiàn)更多操作

1.事件監(jiān)聽

  • 命令行生成監(jiān)聽 php think make:listener UserLogin

一般建議直接在事件定義文件(event.php)中定義對(duì)應(yīng)事件的監(jiān)聽。

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件綁定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件監(jiān)聽
    ],
];

2.事件訂閱

  • 命令行php think make:subscribe User
    默認(rèn)會(huì)生成app\subscribe\User類,或者你可以指定完整類名生成。

<?php
namespace app\subscribe;

class User
{
    public function onUserLogin($user)
    {
        // UserLogin事件響應(yīng)處理
    }

    public function onUserLogout($user)
    {
        // UserLogout事件響應(yīng)處理
    }
}

3.自定義訂閱

如果希望自定義訂閱方式(或者方法規(guī)范),可以定義subscribe方法實(shí)現(xiàn)。

<?php
namespace app\subscribe;

use think\Event;

class User
{
    public function onUserLogin($user)
    {
        // UserLogin事件響應(yīng)處理
    }

    public function onUserLogout($user)
    {
        // UserLogout事件響應(yīng)處理
    }

    public function subscribe(Event $event)
    {
        $event->listen('UserLogin', [$this,'onUserLogin']);
        $event->listen('UserLogout',[$this,'onUserLogout']);
    }
}

然后在事件定義文件注冊(cè)事件訂閱者

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件綁定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件監(jiān)聽
    ],
    'subscribe'    =>    [
       'app\subscribe\User',
        // 更多事件訂閱
    ],
];

事件觸發(fā)

// 觸發(fā)UserLogin事件 用于執(zhí)行用戶登錄后的一系列操作
Event::trigger('UserLogin');
或者使用助手函數(shù)
event('UserLogin');

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

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI