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