Laravel Event

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