New modules activator class
Задача: создать класс, реализующий vendor/nwidart/laravel-modules/src/Contracts/ActivatorInterface.php
(https://github.com/nWidart/laravel-modules/blob/master/src/Contracts/ActivatorInterface.php)
Работать должно все по следующему принципу:
При запросе информации о статусе модуля класс должен пользоваться config()
методом. А config()
метод должен использовать хелпер, который будет мерджить информацию из modules_statuses.json
, modules_statuses.<APP_ENV>.json
, modules_statuses.local.json
с соответствующей перезаписью.
Зачем это надо?
- Использование
config()
метода позволит нам кэшировать происходящее при помощиconfig:cache
и избавить от лишних обращений к файлам и их парсингу - Использование нескольких файлов со статусами избавит от цирка с копированием настроек при разворачивании в разных окружениях
Пример использования config()
функционала можно подсмотреть в логике реализации версионирования нашего бэка.
- Хелпер: https://git.amazingcat.net/AmazingTime/core/cattr-backend/-/blob/development/app/Helpers/Version.php
- Конфиг: https://git.amazingcat.net/AmazingTime/core/cattr-backend/-/blob/development/config/app.php#L7 Фактически, просто класс с сериализатором.
Пример как сделан текущий активатор: https://github.com/nWidart/laravel-modules/blob/master/src/Activators/FileActivator.php