イベントは、ユーザーが Web アプリケーションでトリガーされるさまざまなイベントをサブスクライブしてリッスンできるようにする単純なオブザーバー実装を提供します。 Laravel のすべてのイベント クラスは app/Events フォルダーに保存され、リスナーは app/Listeners フォルダーに保存されます。
Web アプリケーションでイベントとリスナーを生成するための職人コマンドを以下に示します -
php artisan event:generate
このコマンドは、上で説明したように、それぞれのフォルダーにイベントとリスナーを生成します。
1つのイベントが独立した複数のリスナーを持つことができるため、イベントとリスナーはWebアプリケーションを分離する優れた方法として機能します。お互いの。職人コマンドによって作成された events フォルダーには、event.php と SomeEvent.php の 2 つのファイルが含まれています。それらはここに表示されます -
<?php 名前空間 AppEvents; 抽象 クラス イベント{ // }
上で述べたように、event.phpにはクラスEventの基本定義が含まれており、名前空間AppEventsを呼び出します。ユーザー定義イベントまたはカスタム イベントがこのファイルに作成されることに注意してください。
<?php 名前空間 AppEvents; AppEventsEvent を使用します。 IlluminateQueueSerializesModels を使用します。 IlluminateContractsBroadcastingShouldBroadcast を使用します。 class SomeEvent extends Event{ SerializesModel を使用します。 /** * 新しいイベント インスタンスを作成します。 * * @return void */ パブリック関数__construct(){ // } /** * イベントが放送されるチャンネルを取得します。 * * @return 配列 */ public 関数 broadcastOn() { 戻る []; } }
このファイルは、Web アプリケーションでイベントをブロードキャストするためにシリアル化を使用しており、必要なパラメーターもこのファイルで初期化されていることに注目してください。
たとえば、イベントを登録するためにコンストラクターで順序変数を初期化する必要がある場合、次のようにすることができます。次の方法で実行します -
public function __construct(Order $order) { $this->order = $order; }
リスナーは、登録されているイベントで言及されているすべてのアクティビティを処理します。職人コマンド event:generate は、app/listeners ディレクトリにすべての listeners を作成します。 Listeners フォルダーには、リスナーの処理に必要なすべてのメソッドが含まれるファイル EventListener.php が含まれています。
<?php 名前空間 AppListeners。 AppEventsSomeEvent を使用します。 IlluminateQueueInteractsWithQueue を使用します。 IlluminateContractsQueueShouldQueue を使用します。 クラス イベントリスナー{ /** * イベント リスナーを作成します。 * * @return void */ パブリック関数__construct(){ // } /** * イベントを処理します。 * * @param SomeEvent $event * @return void */ public function handle(SomeEvent $event) { // } }
コード内で述べたように、さまざまなイベントを管理するためのhandle関数が含まれています。単一のイベントを対象とするさまざまな独立したリスナーを作成できます。
以上がLaravel - イベント処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。