Laravelのカスタムイベント

William Shakespeare
William Shakespeareオリジナル
2025-03-04 09:07:10116ブラウズ

Custom Events in Laravel

この記事では、Laravelのイベント管理の基本を探ります。また、カスタムイベントとリスナーの実際の例を作成します。

Laravelのイベントの概念は、非常に人気のあるソフトウェアデザインパターンであるオブザーバーパターンに基づいています。このパターンでは、システムは何かが起こったときにイベントを提起し、これらのイベントを聞いてそれに応じて対応するリスナーを定義できます。それは、それ以外の場合は緊密に結合されたコードをもたらすシステム内のコンポーネントを切り離すことができる非常に便利な機能です。たとえば、誰かがあなたのサイトにログにログインしたときにシステム内のすべてのモジュールに通知するとします。したがって、電子メールやアプリ内通知を送信することであろうと、このログインイベントに反応したいものであろうと、このログインイベントに反応することができます。

イベントとリスナーの基本

このセクションでは、Core Frameworkでイベントとリスナーを実装するLaravelの方法を探ります。 Laravelのアーキテクチャに精通している場合は、Laravelがサービスプロバイダーの概念を実装していることを知っているでしょう。これにより、さまざまなサービスをアプリケーションに挿入できるようになります。

同様に、Laravelは、イベントリスナーのマッピングを定義できるようにするための組み込み

eventserviceProvider.php

クラスを提供します。 App/Providers/eventserviceProvider.phpファイル。テンプレートコード。

それは

app/events/clearcache.php
<?php<br><br>namespace App\Providers;<br><br>use Illuminate\Auth\Events\Registered;<br>use Illuminate\Auth\Listeners\SendEmailVerificationNotification;<br>use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;<br>use Illuminate\Support\Facades\Event;<br><br>class EventServiceProvider extends ServiceProvider<br>{<br>    /**<br>     * The event listener mappings for the application.<br>     *<br>     * @var array<br>     */<br>    protected $listen = [<br>        Registered::class => [<br>            SendEmailVerificationNotification::class,<br>        ],<br>    ];<br><br>    /**<br>     * Register any events for your application.<br>     *<br>     * @return void<br>     */<br>    public function boot()<br>    {<br>        parent::boot();<br><br>        //<br>    }<br>}<br>
でイベントクラスを作成し、

app/listeners/warmupcache.phpでリスナークラスを作成するはずです。これ:

おそらく気づいたように、新しいプロパティイベント

ヘルパー関数を使用して、アプリケーション内のどこからでもイベントを上げるために追加されました。イベントが提起されると、Laravelはすべてのリスナーにその特定のイベントを聞いています。php artisan event:generate<br>リスナーは、 applistenerswarmupcache<p>リスナーが<codeventsclearcache>イベントを聴くように設定されています。したがって、<code> applistenerswarmupcacheの<code>メソッドのハンドルは、イベントがコントローラーから提起されたときに呼び出されます。残りは、クリアされたキャッシュをウォームアップすることです!

php artisan event:generate<br>
それがアプリケーションでカスタムイベントを作成してそれらと協力する方法です。

イベントサブスクライバーとは何ですか?

イベントサブスクライバーを使用すると、複数のイベントリスナーを1か所で購読できます。イベントリスナーを論理的にグループ化したいのか、それとも単一の場所で成長イベントを含めたいのか、それはあなたが探しているイベントのサブスクライバーです。

イベントサブスクライバーを使用してこの記事でこれまでに説明した例を実装していた場合、このように見えるかもしれません。

メソッドの最初の引数は
<?php<br><br>namespace App\Providers;<br><br>use Illuminate\Auth\Events\Registered;<br>use Illuminate\Auth\Listeners\SendEmailVerificationNotification;<br>use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;<br>use Illuminate\Support\Facades\Event;<br><br>class EventServiceProvider extends ServiceProvider<br>{<br>    /**<br>     * The event listener mappings for the application.<br>     *<br>     * @var array<br>     */<br>    protected $listen = [<br>        Registered::class => [<br>            SendEmailVerificationNotification::class,<br>        ],<br>    ];<br><br>    /**<br>     * Register any events for your application.<br>     *<br>     * @return void<br>     */<br>    public function boot()<br>    {<br>        parent::boot();<br><br>        //<br>    }<br>}<br>
クラスのインスタンスであり、

メソッドを使用してリスナーとのイベントをバインドするために使用できます。subscribesubscribeIlluminateEventsDispatcherメソッドの最初の引数は、聴きたいイベントです。それ自体。listen

イベントサブスクライバークラスは自動的にピックアップされません。次のスニペットに示されているように、

eventserviceprovider.php listenプロパティの下のクラスに登録する必要があります。リスナー。それらはオブザーバーのデザインパターンに基づいているため、アプリケーション全体のイベントを提起し、他のモジュールがそれらのイベントを聞いてそれに応じて対応できるようにします。

以上がLaravelのカスタムイベントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。