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