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¶
Имя события — топик из сегментов через точку.
getPayload¶
Данные события: массив, DTO или любой другой объект.
getAttributes¶
Все атрибуты: параметры из шаблона маршрута и то, что добавили middleware.
getAttribute¶
Значение атрибута или $default, если атрибута нет.
Parameters:
| Parameter | Type | Description |
|---|---|---|
$name |
non-empty-string | |
$default |
mixed |
withAttribute¶
Копия события с добавленным или заменённым атрибутом.
Parameters:
| Parameter | Type | Description |
|---|---|---|
$name |
non-empty-string | |
$value |
mixed |