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

RouteTable

Таблица собранных маршрутов в порядке объявления. Неизменяемая.

Поиск не перебирает все маршруты. Маршруты без {…}, * и # лежат в хэш-таблице по точному топику — как слушатели в symfony/event-dispatcher. Остальные разложены по литеральному началу шаблона (shop.order у shop.order.{order_id}.paid): регулярное выражение проверяется только у тех, чьё начало совпало с началом топика. Результат для топика запоминается.

Внутри таблица — массивы, а не объекты: так её целиком можно сохранить в кэш и прочитать без разбора. Объекты маршрутов создаются, только когда маршрут совпал с событием или их запросили.


  • Full name: \Selyusize\EventsRouter\Routing\RouteTable
  • This class is marked as final and can't be subclassed
  • This class is a Final class

Methods

getRoutes

public getRoutes(): list<\Selyusize\EventsRouter\Routing\CompiledRoute>

match

Все маршруты, чей шаблон подходит под топик, строго в порядке объявления.

public match(string $topic): list<\Selyusize\EventsRouter\Routing\RouteMatch>

В отличие от HTTP-роутера, возвращает все совпадения: у события может быть сколько угодно слушателей.

Parameters:

Parameter Type Description
$topic string

Return Value:

пустой список, если слушателей нет