События
Во Flute существует система событий.
Чтобы прочесть события можно воспользоваться классом EventDispatcher
либо хелпером events()
.
Как слушать события
Чтобы слушать события, нужно вызвать наш EventDispatcher
, дать обработчик и вызывать слушателя:
events()->addListener(ResponseEvent::NAME, [
SomeHandler::class,
'onResponse'
]);
В данном примере мы слушаем события рендера Response
и вызываем метод onResponse
в классе SomeHandler
, где аргументом будет сам ResponseEvent
:
class SomeHandler
{
public function onResponse( ResponseEvent $event )
{
dd($event); // Смотрим что пришло в Response
}
}
warning
Метод слушателя должен быть публичным, иначе будет возникать ошибка!
Как создавать события
Пример созданного события ниже:
use Symfony\Contracts\EventDispatcher\Event;
class SomeEvent extends Event
{
public const NAME = 'event.name';
protected ?string $arg;
public function __construct(string $arg)
{
$this->arg = $arg;
}
public function getArg(): ?string
{
return $this->arg;
}
}
Мы создали класс, сделали в нем публичный NAME
и далее создали произвольные методы.
Методы могут быть абсолютно любыми.
Чтобы делать dispatch
нашего event
, нам достаточно вызвать наш event
таким образом:
$event = new SomeEvent('Events works!');
events()->dispatch($event, SomeEvent::NAME);