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

Класс Event

Класс Event является фасадом для работы с системой событий Laravel. Он предоставляет статические методы для диспатчинга событий, регистрации слушателей и управления подписками. Основное назначение класса - упростить взаимодействие с событиями и слушателями в приложении.

Синтаксис

Фасад Event предоставляет следующие основные методы:

<?php Event::dispatch($event, $payload = []); Event::listen($events, $listener); Event::subscribe($subscriber); Event::push($event, $payload = []); Event::flush($event); ?>

Пример

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

<?php namespace AppProviders; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { protected $listen = [ 'App\Events\UserRegistered' => [ 'App\Listeners\SendWelcomeEmail', 'App\Listeners\LogUserRegistration', ], ]; public function register() { Event::listen( 'App\Events\UserRegistered', 'App\Listeners\SendWelcomeEmail' ); } } ?>

Пример

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

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

Пример

Зарегистрируем слушатель для события с использованием фасада Event в контроллере:

<?php namespace AppHttpControllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Event; use AppEventsUserRegistered; use AppModelsUser; class UserController extends Controller { public function register(Request $request) { $user = User::create([ 'name' => $request->name, 'email' => $request->email, ]); Event::dispatch(new UserRegistered($user)); return response()->json(['message' => 'User registered']); } } ?>

Результат выполнения кода:

"User registered"

Пример

Используем метод push для отложенной отправки событий в очередь:

<?php namespace AppHttpControllers; use Illuminate\Support\Facades\Event; use AppEventsOrderCreated; class OrderController extends Controller { public function store() { $order = [...]; Event::push('App\Events\OrderCreated', $order); return response()->json(['message' => 'Order created']); } } ?>

Результат выполнения кода:

"Order created"

Пример

Зарегистрируем подписчик для обработки нескольких событий:

<?php namespace AppListeners; use Illuminate\Support\Facades\Event; class UserEventSubscriber { public function handleUserLogin($event) { // логика обработки входа } public function handleUserLogout($event) { // логика обработки выхода } public function subscribe($events) { $events->listen( 'App\Events\UserLoggedIn', 'App\Listeners\UserEventSubscriber@handleUserLogin' ); $events->listen( 'App\Events\UserLoggedOut', 'App\Listeners\UserEventSubscriber@handleUserLogout' ); } } ?>

Регистрация подписчика в EventServiceProvider:

<?php namespace AppProviders; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { public function register() { Event::subscribe('App\Listeners\UserEventSubscriber'); } } ?>

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

  • функция event,
    которая является вспомогательной для диспатчинга событий
  • метод dispatch,
    который отправляет событие для обработки слушателями
  • метод listen,
    который регистрирует слушатель для события
  • метод subscribe,
    который регистрирует подписчика для событий
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить