公式
https://readouble.com/laravel/6.x/ja/events.html
– アプリケーションで発生する様々なイベントを購読し、リッスンする為に使用
– イベントクラスは、app/Eventsディレクトリに格納
– リスナは、app/Listenersディレクトリに保存
## Event利用の流れ
– Event定義
– Eventに対応するListenerを定義
– Eventを仕込む
### 1. app/Providers/EventServiceProvider.php
Eventと対応するListenerを登録する
protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], 'App\Events\AccessDetection' => [ 'App\Listeners\AccessDetectionListener', ] ];
### 2. イベント/リスナ生成
$ php artisan event:generate
※EventServiceProvider.phpで定義していないと、作成されない。
app/Events/AccessDetection.php
public function __construct() { // $this->param = $value; }
app/Listeners/AccessDetectionListener.php
public function handle(AccessDetection $event) { // dump('Access Detected param=' . $event->param); }
### route
use App\Events\AccessDetection; Route::get('event', function(){ event(new AccessDetection(str_random(10))); return 'hoge'; })
$ php composer.phar require laravel/helpers
$ php composer.phar require –dev beyondcode/laravel-dump-server
$ php artisan dump-server
Laravel Var Dump Server
=======================
[OK] Server listening on tcp://127.0.0.1:9912
// Quit the server with CONTROL-C.
GET http://192.168.33.10:8000/event
———————————–
———— ——————————————-
date Thu, 06 Feb 2020 12:10:49 +0000
controller “Closure”
source AccessDetectionListener.php on line 30
file app/Listeners/AccessDetectionListener.php
———— ——————————————-
“Access Detected param=oWhPChPRSh”
なるほど、EventServiceProviderでEventを登録し、Eventsで定義したeventsをListenerで受け取り、controller(route)でevent(new ${eventName})と書いて、event発火の流れでしょうか。大まかな流れは理解しました。