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

RouteGroup

Группа маршрутов: общий префикс топика и общие middleware.

Аналог RouteCollectorProxy в Slim. Хранит свои маршруты и вложенные группы в порядке объявления. Middleware группы оборачивают middleware каждого её маршрута, внешняя группа оборачивает вложенную. add() можно вызвать после объявления маршрутов — так обычно и пишут:

$events->group('order', static function (RouteGroup $group): void {
    $group->listen('created', SendConfirmationEmail::class);
    $group->listen('{order_id}.paid', MarkOrderPaid::class);
})
    ->add(SetUserData::class)
    ->add(EventLogger::class);   // выполнится первым

Methods

listen

Повесить одного слушателя на шаблон топика.

public listen(string $pattern, string $listener): \Selyusize\EventsRouter\Routing\Route

Несколько слушателей на одно событие — несколько вызовов listen(). Вызываются они строго в порядке объявления, приоритетов нет.

Если шаблон вместе с префиксами групп записан с ошибкой — InvalidTopicPattern. Если класс слушателя не найден или не реализует ListenerInterface — InvalidRoute.

Parameters:

Parameter Type Description
$pattern string шаблон относительно префикса группы; в группе может быть пустым
$listener string

group

Группа маршрутов с общим префиксом и общими middleware.

public group(string $prefix, callable $routes): self

Пустой префикс — группа только ради общих middleware.

Parameters:

Parameter Type Description
$prefix string
$routes callable

add

Добавить middleware всем маршрутам группы, включая вложенные группы.

public add(\Selyusize\EventsRouter\Contract\Core\MiddlewareInterface|string $middleware): self

Добавленный последним выполняется первым, как в Slim. Если класс middleware не найден или не реализует MiddlewareInterface — InvalidRoute.

Parameters:

Parameter Type Description
$middleware \Selyusize\EventsRouter\Contract\Core\MiddlewareInterface|string

getPrefix

Префикс группы, как он передан в group().

public getPrefix(): string

getMiddleware

Middleware этой группы в порядке выполнения: первым идёт добавленный последним.

public getMiddleware(): list<class-string<\Selyusize\EventsRouter\Contract\Core\MiddlewareInterface>|\Selyusize\EventsRouter\Contract\Core\MiddlewareInterface>

Middleware внешних групп сюда не входят.


getChildren

Маршруты и вложенные группы в порядке объявления.

public getChildren(): list<\Selyusize\EventsRouter\Routing\Route|self>

join

Соединить части топика через точку, пропуская пустые.

public static join(string $parts): string
  • This method is static. Parameters:
Parameter Type Description
$parts string