Maison  >  Article  >  cadre php  >  Maîtriser complètement la liaison, la surveillance et l'abonnement des événements de thinkphp

Maîtriser complètement la liaison, la surveillance et l'abonnement des événements de thinkphp

WBOY
WBOYavant
2022-04-13 12:56:383687parcourir

Cet article vous apporte des connaissances pertinentes sur thinkphp, qui présente principalement les problèmes liés à la liaison, à la surveillance et à l'abonnement des événements. L'avantage des événements par rapport au middleware est que les événements sont positionnés avec plus de précision que le middleware. , j'espère que cela aidera tout le monde.

Maîtriser complètement la liaison, la surveillance et l'abonnement des événements de thinkphp

Étude recommandée : "Tutoriel vidéo PHP"

Qu'est-ce qu'un événement

L'avantage des événements par rapport au middleware est que les événements sont positionnés avec plus de précision (ou plus granulaires) que le middleware, et plus Extensions adaptées à certains scénarios commerciaux. Par exemple, nous rencontrons généralement des utilisateurs qui doivent effectuer une série d'opérations après leur inscription ou leur connexion. Grâce au système d'événements, nous pouvons terminer l'expansion des opérations de connexion sans envahir le code d'origine, réduisant ainsi le couplage du système tout en répondant aux besoins de l'entreprise. .

L'utilisation des événements dans TP6

Explication sur le site officiel, il n'y a pas d'exemples Ici, je vais simplement vous dire comment l'utiliser, je découvrirai plus d'opérations après l'avoir utilisé

1. Surveillance de génération de ligne de commande php think make:listener UserLogin

  • Il est généralement recommandé de définir l'écoute de l'événement correspondant directement dans le fichier de définition d'événement (php think make:listener UserLogin

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

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

2.事件订阅

  • 命令行php think make:subscribe Userevent.php
    ).
<?php
namespace app\subscribe;

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

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

2. Abonnement à un événement

Ligne de commande php think make:subscribe User

La classe appsubscribeUser sera générée par défaut, ou vous pouvez spécifier le nom complet de la classe à générer.

<?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. Abonnement personnalisé

Si vous souhaitez personnaliser la méthode d'abonnement (ou la spécification de la méthode), vous pouvez définir l'implémentation de la méthode d'abonnement.

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
    'subscribe'    =>    [
       'app\subscribe\User',
        // 更多事件订阅
    ],
];
Ensuite, enregistrez l'abonné à l'événement dans le fichier de définition de l'événement

// 触发UserLogin事件 用于执行用户登录后的一系列操作
Event::trigger('UserLogin');
或者使用助手函数
event('UserLogin');
🎜L'événement est déclenché🎜🎜rrreee🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer