Автоматическое создание 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, передавая ему конфиги модуля в качестве аргумента конструктора.