公式
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発火の流れでしょうか。大まかな流れは理解しました。