Перейти к содержанию

EventInterface

Событие: имя-топик, данные и атрибуты.

Имя — конкретный топик из сегментов через точку, например shop.order.42.paid. Роутер сопоставляет его с шаблонами маршрутов (order.{order_id}.paid) и кладёт найденные параметры в атрибуты, как Slim кладёт {id} из URL в атрибуты запроса.

Событие неизменяемо, как PSR-7 запрос: withAttribute() возвращает новый объект. Благодаря этому каждый слушатель получает свою копию со своими параметрами и не может испортить событие для остальных.

$event = new Event('shop.order.42.paid', ['amount' => 1500]);

$event->getName();                     // 'shop.order.42.paid'
$event->getPayload();                  // ['amount' => 1500]

$withId = $event->withAttribute('order_id', '42');
$withId->getAttribute('order_id');      // '42'
$event->getAttribute('order_id');       // null — исходное событие не изменилось

  • Full name: \Selyusize\EventsRouter\Contract\Core\EventInterface

Methods

getName

Имя события — топик из сегментов через точку.

public getName(): non-empty-string

getPayload

Данные события: массив, DTO или любой другой объект.

public getPayload(): \Selyusize\EventsRouter\Contract\Core\TPayload

getAttributes

Все атрибуты: параметры из шаблона маршрута и то, что добавили middleware.

public getAttributes(): array<non-empty-string,mixed>

getAttribute

Значение атрибута или $default, если атрибута нет.

public getAttribute(non-empty-string $name, mixed $default = null): mixed

Parameters:

Parameter Type Description
$name non-empty-string
$default mixed

withAttribute

Копия события с добавленным или заменённым атрибутом.

public withAttribute(non-empty-string $name, mixed $value): static

Parameters:

Parameter Type Description
$name non-empty-string
$value mixed