Конфигурация¶
Фабрика¶
| Аргумент | Что это | По умолчанию |
|---|---|---|
$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 роутера, один раз на событие | — |