Учебники

Laravel — Обработка событий

События обеспечивают простую реализацию наблюдателя, которая позволяет пользователю подписываться и прослушивать различные события, запускаемые в веб-приложении. Все классы событий в Laravel хранятся в папке app / Events, а слушатели — в папке app / Listeners .

Команда artisan для генерации событий и слушателей в вашем веб-приложении показана ниже —

php artisan event:generate

Эта команда генерирует события и прослушиватели для соответствующих папок, как описано выше.

Генератор событий

События и прослушиватели служат отличным способом развязки веб-приложения, поскольку одно событие может иметь несколько прослушивателей, которые не зависят друг от друга. Папка событий, созданная командой artisan, содержит следующие два файла: event.php и SomeEvent.php. Они показаны здесь —

Event.php

<?php
namespace App\Events;
abstract class Event{
   //
}

Как упоминалось выше, event.php включает базовое определение класса Event и вызывает пространство имен App \ Events . Обратите внимание, что пользовательские или пользовательские события создаются в этом файле.

SomeEvent.php

<?php

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class SomeEvent extends Event{
   use SerializesModels;
   /**
      * Create a new event instance.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }
   
   /**
      * Get the channels the event should be broadcast on.
      *
      * @return array
   */
   
   public function broadcastOn() {
      return [];
   }
}

Обратите внимание, что этот файл использует сериализацию для трансляции событий в веб-приложении и что необходимые параметры также инициализируются в этом файле.

Например, если нам нужно инициализировать переменную порядка в конструкторе для регистрации события, мы можем сделать это следующим образом:

public function __construct(Order $order) {
   $this->order = $order;
}

Слушатели

Слушатели обрабатывают все действия, упомянутые в событии, которое регистрируется. Событие команды artisan : generate создает всех слушателей в каталоге app / listeners . Папка Listeners содержит файл EventListener.php, в котором есть все методы, необходимые для обработки слушателей.

EventListener.php

<?php

namespace App\Listeners;

use App\Events\SomeEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class EventListener{
   /**
      * Create the event listener.
      *
      * @return void
   */
   
   public function __construct() {
      //
   }

   /**
      * Handle the event.
      *
      * @param SomeEvent $event
      * @return void
   */
   
   public function handle(SomeEvent $event) {
      //
   }
}

Как уже упоминалось в коде, он включает в себя функцию handle для управления различными событиями. Мы можем создавать различных независимых слушателей, которые нацелены на одно событие.