php think make:listener例:
php think make:listener UserListener実行後、
UserListener が \app\
listener## に生成されます#\ このクラス。 2. リスニングの設定: ファイル
'testEvent' => ['app\listener\UserListener']],
3. リスニングをトリガーする: リスニングをトリガーする必要がある場所に次の行を追加します。コード
event('testEvent');
注: ここでのパラメータ testEvent はイベント名であり、任意に定義できますが、event.php ファイルで設定されたキー名と一致している必要があります。
リスナーをトリガーするときに 2 番目のパラメーターを指定できます。ハンドル メソッドのパラメーターである 2 番目のパラメーターを介して、任意のデータを UserListener クラスに渡すことができます (意味がわからない場合は、以下の完全なコードを見て理解してください)。
4. リスニング ロジックの処理: UserListener クラスの handle メソッドでビジネス ロジックを完成させます
完全なコードは次のとおりです
その他: テストに使用されるクラス
<?php namespace app\controller; class Other { public function hello() { echo 'hello function'; } }
Index: リスニングをトリガーするクラス
UserListener: イベント リスニング クラス
<?php namespace app\listener; class UserListener { /** * 事件监听处理 * * @return mixed */ public function handle($event) { //当调用Index类的test1方法时该代码有效,$event为null var_dump($event); //当调用Index类的test2方法时该代码有效,$event为字符串hello var_dump($event); //当调用Index类的test3方法时该代码有效,$event为Index类的实例 //可以访问Index类的name变量 echo $event->name; //当调用Index类的test4方法时该代码有效,$event为Other类的实例 //可以调用Other类的hello方法 echo $event->hello(); } }2.
1 をサブスクライブして、サブスクリプション クラス ## を作成します。コマンド内の
# ライン モードで、フレームワークのルート ディレクトリに入り、php think make:subscribe
例:
php think make:subscribe UserSubscribe
2. モニタリングの設定ファイル実行後、UserSubscribe クラスが \app\subscribe\ に生成されます。
\app\event.php のサブスクライブ配列で UserSubscribe クラスを次のように設定します: 'subscribe' => ['app\subscribe\UserSubscribe'],
3. トリガー監視最初の方法と同じ4. プロセス監視ロジックプロセス監視ロジックには 2 つの方法があり、これを自動バインディングと呼びます。手動バインディング。手動バインドと自動バインドは相互に排他的であり、どちらか一方のみを選択できます。 4.1 自動バインディングビジネス ロジックを完成させる ontestEvent メソッドを UserSubscribe クラスに追加する必要があります。追加するメソッド名は任意に定義することはできず、イベント名の前に追加するのがルールです。 event.php で定義したイベント名は testEvent であるため、メソッド名は ontestEvent になります (大文字と小文字に注意してください)。リスニング メソッドが定義されると、自動的にイベントにバインドされるため、これを自動バインディングと呼びます。 完全なコードは次のとおりです。Other クラスと Index クラスのコードは最初のアプローチと同じですUserSubscribe: イベント サブスクリプション クラス注: 効果をテストするには、上で構成した UserListener をリッスン配列から削除する必要があります
<?php namespace app\subscribe; class UserSubscribe { public function ontestEvent($user) { //当调用Index类的test1方法时该代码有效,$event为null var_dump($user); //当调用Index类的test2方法时该代码有效,$event为字符串hello var_dump($user); //当调用Index类的test3方法时该代码有效,$event为Index类的实例 //可以访问Index类的name变量 echo $user->name; //当调用Index类的test4方法时该代码有效,$event为Other类的实例 //可以调用Other类的hello方法 echo $user->hello(); } }4.2 手動バインディングまず、特定のビジネス ロジックの処理を担当するイベント クラスを作成します。コマンド ライン モードでフレームワークのルート ディレクトリを入力し、次を実行します:php think make:event
#例:php think make:event UserEvent実行後、UserEvent クラスが \app\event\ に生成されます。 次に、このクラスに受信パラメータを持つハンドル メソッドを定義します。メソッド名と渡されるパラメータ名は任意に定義できます。特定のビジネス ロジックは handle メソッドで処理できます。次に、UserSubscribe クラスに Subscribe メソッドを追加します。このメソッドは、Event オブジェクトをパラメータとして受け取る必要があります。次に、この関数の UserEvent クラスのハンドル メソッドにイベント リスナーをバインドします。次のとおりです:
$event->listen('testEvent', [app('app\event\UserEvent'), 'handle']);完全なコードは次のとおりです
Other クラスと Index クラスのコードは最初のアプローチと同じです
UserSubscribe: イベント サブスクリプション クラス
UserEvent: イベント処理クラス
<?php declare (strict_types = 1); namespace app\event; class UserEvent { public function handle($user) { //当调用Index类的test1方法时该代码有效,$user为null var_dump($user); //当调用Index类的test2方法时该代码有效,$user为字符串hello var_dump($user); //当调用Index类的test3方法时该代码有效,$user为Index类的实例 //可以访问Index类的name变量 echo $user->name; //当调用Index类的test4方法时该代码有效,$user为Other类的实例 //可以调用Other类的hello方法 echo $user->hello(); } }以上がThinkphp イベントメカニズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









