thinkphp のイベント バインディング、モニタリング、サブスクリプションを完全にマスターする

WBOY
リリース: 2022-04-13 21:04:32
転載
3678 人が閲覧しました

この記事では、thinkphp に関する関連知識を提供します。主にイベント バインディング、監視、およびサブスクリプションに関連する問題を紹介します。ミドルウェアと比較したイベントの利点は、イベントがミドルウェアよりも優れていることです。 、以下で見てみましょう。皆さんの参考になれば幸いです。

thinkphp のイベント バインディング、モニタリング、サブスクリプションを完全にマスターする

## 推奨学習: 「

PHP ビデオ チュートリアル

イベントとは

ミドルウェアと比較したイベントの利点は、イベントがミドルウェアよりも正確に配置され (またはより詳細に)、一部のビジネス シナリオの拡張に適していることです。たとえば、通常、ユーザーは登録やログイン後に一連の操作を実行する必要があります。イベント システムを使用することで、元のコードを侵害することなくログイン操作の拡張を完了でき、ビジネス ニーズを満たしながらシステムの結合を削減できます。 。

TP6のイベントの使い方

公式サイトに説明があり、例はありませんが、ここでは簡単に使い方を説明し、実際に使ってみると操作がわかります

1. イベント listen

    listening を生成するコマンド ライン
  • 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\ を生成します。デフォルトのユーザー クラスを使用することも、生成する完全なクラス名を指定することもできます。
<?php
namespace app\subscribe;

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

    public function onUserLogout($user)
    {
        // UserLogout事件响应处理
    }
}
ログイン後にコピー
3. カスタム サブスクリプション

サブスクリプション メソッド (またはメソッド仕様) をカスタマイズする場合は、サブスクライブ メソッドの実装を定義できます。

<?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');
ログイン後にコピー

推奨学習:「

PHP ビデオ チュートリアル##」 #》

以上がthinkphp のイベント バインディング、モニタリング、サブスクリプションを完全にマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート