module-options
Описание модуля
Каждый модуль являющейся часть сервиса, должен содержать класс описывающий настройки модуля. Данный модуль (Nnx\ModuleOptions) реализует:
- Менеджер для получения настроек модуля.
- Дает расширенные возможности по получению настроек модуля: -- Возможность получить настройки модуля по имени любого класса расположенного в данном модуле -- Возможность получить имя модуля по имени любого класса расположенного в данном модуле -- Возможность получить настройки модуля по его имени
Описание сервисов предоставляемых модулем для внешнего использования
Сервис \Nnx\ModuleOptions\ModuleOptionsPluginManagerInterface
Данный сервис является менеджером для работы с настройками модулей. Каждый модуль должен иметь класс, реализующий интерфейс \Nnx\ModuleOptions\ModuleOptionsInterface и описывающий все возможные настройки модуля.
Класс описывающий настройки модуля должен быть зарегестрирова через конфиги следующим образом(или любым другим способо, который поддерживает \Zend\ServiceManager\AbstractPluginManager):
namespace Nnx\ModuleOptions\PhpUnit\TestData\OptionsByModuleTest;
use Nnx\ModuleOptions\ModuleOptionsPluginManager;
use Nnx\ModuleOptions\PhpUnit\TestData\OptionsByModuleTest\TestModule1\Options\ModuleOptions as ModuleOptions1;
return [
ModuleOptionsPluginManager::CONFIG_KEY => [
'invokables' => [
ModuleOptions1::class => ModuleOptions1::class,
]
]
];
Базовые методы сервиса:
Имя метода | Описание |
---|---|
getOptionsByClassName | Возвращает конфиг модуля, по имиени любого класса из данного модуля |
getModuleNameByClassName | По имени класса, возвращает имя модуля к которому принадлежит данный класс |
getOptionsByModuleName | По имени модуля возвращает объект с его настройками |
События сервиса \Nnx\ModuleOptions\ModuleOptionsPluginManagerInterface
В стандартной реализации получение объекта с настройками модуля осуществляется по следующему алгоритму:
- Получаем имя модуля
- Прибавляем к имени модуля заданный суффикс. По умолчанию это 'Options\ModuleOptions'.
- Провреяем есть ли для получившегося имени в менеджере зарегестрированный объект настроек модуля, если есть, то возвращаем его
В случае если для конкретного модуля, необходимо реализовать другой алгоритм получения, то данная задача решается через события.
Сервис бросает событие с именем @see \Nnx\ModuleOptions\ModuleOptionsEventInterface::LOAD_MODULE_OPTIONS_EVENT.
На данное событие необходимо подписаться с помощью \Zend\EventManager\SharedEventManager, и реализовать свою логику получения настроек модуля.
Обработчик данного события получит в качестве аргумента объект инстанцированный от \Nnx\ModuleOptions\ModuleOptionsEventInterface. С помощью данного объекта можно получить имя модуля, для которого необходимо создать объект настроек.
Настройка модуля
Настройка модуля осщуествляется путем добавления в секцию @see \Nnx\ModuleOptions\Module::CONFIG_KEY (nnx_module_options) соответствующих настроек.
Описание настроек
Ключ | Описание |
---|---|
moduleOptionsClassNameSuffix | Суффикс прибавляемый к имени модуля. Ожидается что получившиеся строка, будет именем класса настроек модуля |