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

WBOY
Freigeben: 2022-04-13 21:04:32
nach vorne
3688 Leute haben es durchsucht

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'],
        // 更多事件监听
    ],
];
Nach dem Login kopieren

    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事件响应处理
    }
}
Nach dem Login kopieren

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']);
    }
}
Nach dem Login kopieren

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',
        // 更多事件订阅
    ],
];
Nach dem Login kopieren

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

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage