Где вы храните названия событий в событийно-ориентированых ситемах?
Доброго дня.
Работаю над проектом на Yii2 у которого модули общаются между собой только через события. Это надо потому что любой модуль может быть просто удален из кодовой базы или добавлен новый. При этом все должно нормально работать и взаимодействовать между собой.
Но я все ломаю голову, как хранить имена событий? Просто строкой их указывать не круто, надо бы константы использовать. Но если константа находится в модуле, то при его удалении отвалится код, использующий их. Хранить имена всех событий где-то глобально тоже не комильфо потому, что ядро не знает о том, какими модулями оперирует.
Еще есть проблема уникальнти имен для событий. Например есть два модуля и у обоих есть событие "ticketCreated". События разные, но при добавлении обработчика мы начнем слушать события сразу для обоих модулей. Думается мне, что надо бы добавлять в название события id модуля или какую-нибудь уникальную строку. Но как это сделать красивее?
В общем суть вопроса: как правильно хранить и обращаться к названиям событий? И как гарантировать уникальность имен?