Отправка события через dispatch в Laravel
Если у класса события подключён
трейт Dispatchable, появляется
статический метод dispatch.
Он создаёт экземпляр и сразу
отправляет его слушателям - без
явного new и без хелпера
event.
Аргументы dispatch те же,
что у конструктора события.
Передали заказ - он попадёт
в свойство $order:
<?php
use App\Events\OrderShipped;
public function ship(Order $order)
{
// ... смена статуса, сохранение
OrderShipped::dispatch($order);
return 'Order shipped';
}
?>
По смыслу это то же самое, что
event(new OrderShipped($order)).
Разница в записи: короче и читается
как «отправить событие такого класса».
В проектах часто выбирают один стиль
и держатся его.
Без трейта Dispatchable
метод ::dispatch у события
не появится - тогда остаётся хелпер
event из прошлого урока.
Проверьте, что трейт есть в классе
события (Artisan обычно добавляет
его сам при make:event).
Отправьте UserRegistered
через ::dispatch.
Сравните запись с вызовом
event(new ...) -
что удобнее вам?
Какой трейт нужен классу события
для метода dispatch?