ホームページ >バックエンド開発 >PHPチュートリアル >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はすべてのリスナーにその特定のイベントを聞いています。 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>クラスのインスタンスであり、
メソッドを使用してリスナーとのイベントをバインドするために使用できます。subscribe
subscribe
IlluminateEventsDispatcher
メソッドの最初の引数は、聴きたいイベントです。それ自体。listen
eventserviceprovider.php listen
プロパティの下のクラスに登録する必要があります。リスナー。それらはオブザーバーのデザインパターンに基づいているため、アプリケーション全体のイベントを提起し、他のモジュールがそれらのイベントを聞いてそれに応じて対応できるようにします。
以上がLaravelのカスタムイベントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。