Laravel イベント

イベント発生の流れ

イベントを呼び出し

リスナーが実行される

イベント

ソースファイル自動生成

Laravel Artisanコマンド#ソース作成
イベント作成

処理

<?php

namespace App\Events;

class TestEvent
{
 use Dispatchable, InteractsWithSockets, SerializesModels;

 public $value;

 public function __construct()
 {
  $this->value = [
   ’val1′ => ‘aaa’,
   ’val2′ => ‘bbb’,
  ];
 }

 〜
}

リスナー

ソースファイル自動生成

Laravel Artisanコマンド#ソース作成
リスナー作成

処理

<?php

namespace App\Listeners;

use App\Events\TestEvent;

class TestListener
 非同期実行させる場合
 implements ShouldQueue
{
 〜

 public function handle(TestEvent $event)
 {
  echo($event->value[‘val1’]);
  echo($event->value[‘val2’]);
 }
}

イベントの登録

<?php

namespace App\Providers;

use App\Events\TestEvent;
use App\Listeners\TestListener;

class EventServiceProvider extends ServiceProvider
{
 protected $listen = [
  TestEventを呼び出すとTestListenerが実行される
  TestEvent::class => [
   TestListener::class,
  ],
 ];

 〜
}

イベントの呼び出し

<?php

namespace App\Http\Controllers;

use App\Events;
use App\Events\TestEvent;

class HomeController extends Controller
{
 public function index(Request $request)
 {
  event(new TestEvent());
  →TestLister#handleが実行される
 }
}

非同期実行の場合の実行

環境変数
QUEUE_CONNECTION=database
の場合、jobsテーブルに登録されたジョブを実行するワーカープロセスを起動させておく

php artisan queue:work

Laravelバッチ/ジョブの非同期設定」参照

ワーカープロセスの管理

Laravelバッチ/Supervisor」参照

 
 
Laravel

前の記事

Laravel ミドルウェア
Laravel

次の記事

Laravel バッチ