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