Автоматическое создание ModuleOptions, с помощью абстрактной фабрики \Nnx\ModuleOptions\ModuleConfigKeyProviderInterface
Быстрый старт
В корне проекта создать класс отвечающй за описание настроек модуля
- По умолчанию класс должен распологаться в src\Options\ModuleOptions.php (**Месторасположение по умолачнаию можно изменить через настройки @see \Nnx\ModuleOptions\Options\ModuleOptions::$moduleOptionsClassNameSuffix)
- ModuleOptions должен:
- Имплементировать интерфейс \Nnx\ModuleOptions\ModuleOptionsInterface
- Класс должен наследоваться от \Zend\Stdlib\AbstractOptions
- Класс модуля должен имплементировать \Nnx\ModuleOptions\ModuleConfigKeyProviderInterface
- В классе модуля реализовать метод getModuleConfigKey возвращающий имя ключа, по которому в конфигах приложения, можно получить массив с данными, для настроек модуля
Пример ModuleOptions:
- Расположение:
src
Options
ModuleOptions
- Пример релизации ModuleOptions
use Nnx\ModuleOptions\ModuleOptionsInterface;
use Zend\Stdlib\AbstractOptions;
/**
* Class ModuleOptions
*
* @package Nnx\ModuleOptions\PhpUnit\TestData\DefaultModuleOptionsAbstractFactory\TestModule1\Options
*/
class ModuleOptions extends AbstractOptions implements ModuleOptionsInterface
{
}
Пример Module:
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Nnx\ModuleOptions\ModuleConfigKeyProviderInterface;
/**
* Class Module
*
*/
class Module implements
AutoloaderProviderInterface,
ConfigProviderInterface,
ModuleConfigKeyProviderInterface
{
/**
* Имя секции в конфиги приложения отвечающей за настройки модуля
*
* @var string
*/
const CONFIG_KEY = 'test_module_1';
/**
* @return string
*/
public function getModuleConfigKey()
{
return static::CONFIG_KEY;
}
/**
* @return array
*/
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/',
),
),
);
}
/**
* @inheritdoc
*
* @return array
*/
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
Описание алгоритма работы \Nnx\ModuleOptions\DefaultModuleOptionsAbstractFactory
Абстрактная фабрика \Nnx\ModuleOptions\DefaultModuleOptionsAbstractFactory:
- Определяет по имени класса ModuleOptions, к какому модулю относится данный класс
- Определяет имплементирует ли модуль интерфейс \Nnx\ModuleOptions\ModuleConfigKeyProviderInterface, если да, то модуль может вернуть ключ, по которому из конфига приложения, можно поулчить настройки модуля
- Создает ModuleOptions, передавая ему конфиги модуля, в качестве аргумента конструктора