События обеспечивают простую реализацию наблюдателя, которая позволяет пользователю подписываться и прослушивать различные события, запускаемые в веб-приложении. Все классы событий в 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 для управления различными событиями. Мы можем создавать различных независимых слушателей, которые нацелены на одно событие.