Описание модуля

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