Описание модуля
Каждый модуль, являющийся частью сервиса, должен содержать класс, описывающий настройки модуля. Данный модуль (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 | Суффикс, прибавляемый к имени модуля. Ожидается, что получившиеся строка будет именем класса настроек модуля |