Heim  >  Artikel  >  PHP-Framework  >  Beherrschen Sie die Ereignisbindung, -überwachung und das Abonnement von thinkphp vollständig

Beherrschen Sie die Ereignisbindung, -überwachung und das Abonnement von thinkphp vollständig

WBOY
WBOYnach vorne
2022-04-13 12:56:383615Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über thinkphp, in dem hauptsächlich Probleme im Zusammenhang mit der Ereignisbindung, -überwachung und -abonnement vorgestellt werden. Der Vorteil von Ereignissen im Vergleich zu Middleware besteht darin, dass Ereignisse genauer positioniert sind als Middleware , hoffe es hilft allen.

Beherrschen Sie die Ereignisbindung, -überwachung und das Abonnement von thinkphp vollständig

Empfohlene Studie: „PHP-Video-Tutorial

Was ist ein Ereignis? Der Vorteil von Ereignissen im Vergleich zu Middleware besteht darin, dass Ereignisse genauer positioniert (oder detaillierter) sind als Middleware und mehr Erweiterungen, die für einige Geschäftsszenarien geeignet sind. Beispielsweise stoßen wir normalerweise auf Benutzer, die nach der Registrierung oder Anmeldung eine Reihe von Vorgängen ausführen müssen. Durch das Ereignissystem können wir die Erweiterung des Anmeldevorgangs abschließen, ohne in den ursprünglichen Code einzudringen, wodurch die Kopplung des Systems verringert und gleichzeitig die Geschäftsanforderungen erfüllt werden .

Die Verwendung von Ereignissen in TP6

Erläuterung auf der offiziellen Website, es gibt keine Beispiele. Hier werde ich Ihnen einfach erklären, wie man es verwendet. Nach der Verwendung werde ich weitere Vorgänge entdecken

Überwachung der Befehlszeilengenerierung php think make:listener UserLogin

Es wird generell empfohlen, das Abhören des entsprechenden Ereignisses direkt in der Ereignisdefinitionsdatei (

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

    2. Ereignisabonnement
  • php think make:listener UserLogin

一般建议直接在事件定义文件(event.php)中定义对应事件的监听。

<?php
namespace app\subscribe;

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

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

2.事件订阅

  • 命令行php think make:subscribe User
  • Befehlszeile php think make:subscribe User
Die appsubscribeUser-Klasse wird standardmäßig generiert, oder Sie können den vollständigen zu generierenden Klassennamen angeben.

<?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']);
    }
}

3. Benutzerdefiniertes Abonnement

Wenn Sie die Abonnementmethode (oder Methodenspezifikation) anpassen möchten, können Sie die Implementierung der Abonnementmethode definieren.

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

Dann registrieren Sie den Ereignisabonnenten in der Ereignisdefinitionsdatei
// 触发UserLogin事件 用于执行用户登录后的一系列操作
Event::trigger('UserLogin');
或者使用助手函数
event('UserLogin');

Das Ereignis wird ausgelöst

rrreeeEmpfohlenes Lernen: „
PHP-Video-Tutorial

“🎜🎜

Das obige ist der detaillierte Inhalt vonBeherrschen Sie die Ereignisbindung, -überwachung und das Abonnement von thinkphp vollständig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen