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

Конфигурация

Фабрика

EventRouterFactory::create(?ContainerInterface $container = null, array $config = []): EventRouter
Аргумент Что это По умолчанию
$container PSR-11 контейнер проекта: из него создаются middleware, его же отдаёт Container::get() PHP-DI с автосвязыванием
$config настройки роутера, ключи ниже []

Ключи конфига

Ключи в snake_case — массив можно целиком взять из config['events_router'] проекта.

Ключ Тип По умолчанию Что делает
log_path непустая строка <sys_get_temp_dir()>/events-router/{date}.log шаблон пути к файлу лога, подстановки {date} (Y-m-d) и {level} (error, info, …)
log_dispatch bool false писать каждую рассылку: событие, атрибуты, слушателей со статусом и временем
route_cache_file непустая строка или null null PHP-файл кэша маршрутов для loadRoutes(), см. Включить кэш маршрутов
locale 'ru' или 'en' 'ru' язык исключений, лога и предупреждений, см. ниже

Неизвестный ключ или значение не того типа — исключение InvalidConfig.

$events = EventRouterFactory::create($container, [
    'log_path' => '/var/www/local/logs/events-router/{level}/{date}.log',
    'log_dispatch' => true,
    'route_cache_file' => '/var/www/local/var/cache/events-routes.php',
]);

Язык сообщений

Сообщения библиотеки по умолчанию на русском: тексты исключений, записи лога, предупреждения PHP. 'locale' => 'en' переключает их на английский. Ссылки в исключениях ведут на этот сайт — он только на русском:

Invalid topic pattern "order-{order_id}.paid": parameter in segment "order-{order_id}" must take the whole segment, e.g. order.{order_id}. See https://selyusize.github.io/events-router/errors/invalid-topic-pattern/

Язык один на процесс. Имя события проверяется в new Event(), где роутера нет, поэтому язык не может принадлежать экземпляру роутера. Он действует с момента вызова create(), в том числе на события, созданные после. Создавайте роутер при старте приложения, до первых событий. Вызов create() без ключа locale язык не меняет.

Сеттеры роутера

То, что удобнее настраивать объектом, а не значением в конфиге.

Метод Что делает По умолчанию
setLogger(LoggerInterface $logger) лог роутера вместо файла из log_path FileLogger
setErrorHandler(ErrorHandlerInterface $handler) куда отправлять ошибки слушателей запись в лог роутера
setErrorStrategy(ErrorStrategyEnum $strategy) что делать после ошибки слушателя Continue
setPrefix(string $prefix) общий префикс всех топиков ''
add($middleware) middleware роутера, один раз на событие —