РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1315 of 1392 menu

Команда make:event

Команда make:event создаёт новый класс события в директории app/Events. События используются для уведомления различных частей приложения о том, что произошло определённое действие. Класс события обычно содержит информацию о произошедшем действии, которая передаётся слушателям.

Синтаксис

php artisan make:event EventName

Где EventName - имя создаваемого класса события в формате CamelCase. По умолчанию класс создаётся в пространстве имён App\Events.

Пример

Создадим событие для случая, когда пользователь регистрируется в системе:

<?php namespace App\Events; use App\Models\User; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class UserRegistered { use Dispatchable, InteractsWithSockets, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } }

В данном примере мы создаём событие UserRegistered, которое принимает модель пользователя через конструктор. Это позволяет передавать данные о пользователе слушателям события.

Пример

Создадим событие с дополнительными данными для заказа:

<?php namespace App\Events; use App\Models\Order; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class OrderShipped { use Dispatchable, SerializesModels; public $order; public $shippingDate; public function __construct(Order $order, $shippingDate) { $this->order = $order; $this->shippingDate = $shippingDate; } }

Это событие содержит информацию о заказе и дате отправки. Все публичные свойства класса будут доступны слушателям.

Пример

Создадим событие с использованием интерфейса ShouldBroadcast для реализации веб-сокетов:

<?php namespace App\Events; use App\Models\User; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class MessageSent implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; public $user; public $message; public function __construct(User $user, $message) { $this->user = $user; $this->message = $message; } public function broadcastOn() { return new Channel('chat'); } public function broadcastAs() { return 'message.sent'; } }

В этом примере событие реализует интерфейс ShouldBroadcast, что позволяет транслировать его через веб-сокеты. Метод broadcastOn определяет канал вещания, а broadcastAs - имя события на клиентской стороне.

Пример

Теперь создадим слушатель для нашего события и зарегистрируем его в провайдере:

<?php namespace App\Providers; use App\Events\UserRegistered; use App\Listeners\SendWelcomeEmail; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider { protected $listen = [ UserRegistered::class => [ SendWelcomeEmail::class, ], ]; }

Регистрация события в свойстве listen связывает событие UserRegistered со слушателем SendWelcomeEmail. Когда событие будет вызвано, все зарегистрированные слушатели получат уведомление.

Смотрите также

  • команда make:listener,
    которая создаёт слушатель для событий
  • команда make:job,
    которая создаёт задачу для очереди
  • команда make:mail,
    которая создаёт класс для отправки почты
  • команда make:notification,
    которая создаёт уведомление
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить