sandrokeil/easy-config

Zend Framework 2 (zf2) 模块,用于检索特定模块选项,并提供一些抽象工厂以方便根据配置创建实例

1.3.0 2014-09-24 14:05 UTC

This package is auto-updated.

Last update: 2024-08-28 22:42:27 UTC


README

您想通过模块配置来配置您的工厂吗?

您想通过模块配置来配置选项类以用于您的插件管理器吗?

您想通过模块配置向工厂添加其他服务吗?

本模块正是为此而生!

Build Status Scrutinizer Quality Score Coverage Status HHVM Status SensioLabsInsight Latest Stable Version Dependency Status Total Downloads License

EasyConfig 提供了一些抽象工厂和一些接口,可以轻松根据配置创建实例或检索指定的模块选项。

  • 经过充分测试。 除了单元测试和持续集成/检查,此解决方案也适用于生产使用。
  • 强大的基础。 基于 Zend Framework 2
  • 跟踪每个变更。 想知道有什么新功能?请查看 CHANGELOG.md
  • 倾听您的想法。 有一个好主意?带来经过测试的 pull request 或创建一个新的问题。

您应该有编码约定和配置约定。如果没有,您应该考虑一下。

模块配置键应该具有以下结构 module.scope.name。一个常见的配置如下所示

return array(
    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(...)
            )
        )
    )
);

因此,doctrine 是模块,connection 是作用域,orm_default 是名称。之后是特定的实例选项。通过 AbstractConfigurableFactory 我们可以轻松访问这些选项,也可以使用选项类和必选选项检查。有关详细信息,请参阅 文档

use Sake\EasyConfig\Service\AbstractConfigurableFactory;
use Sake\EasyConfig\Service\OptionsClassInterface;
use Sake\EasyConfig\Service\MandatoryOptionsInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class MyDBALConnectionFactory extends AbstractConfigurableFactory implements FactoryInterface, OptionsClassInterface, MandatoryOptionsInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        // get option class for doctrine.connection.orm_default
        // dont implement OptionsClassInterface to get an array of options
        $options = $this->getOptions($serviceLocator);

        // so you can do
        $pdo          = $options->getPdo();
        $driverClass  = $options->getDriverClass();
        $wrapperClass = $options->getWrapperClass();

        // create your instance

        return $instance;
    }

    /**
     * Returns a list of mandatory options which must be available
     *
     * @return array
     */
    public function getMandatoryOptions()
    {
        return array(
            'driverClass',
            'params',
        );
    }

    /**
     * Return the option class name (fcqn) where options are injected via constructor
     *
     * @return string
     */
    public function getOptionsClass()
    {
        return '\DoctrineORMModule\Options\DBALConnection';
    }

    /**
     * Module name
     *
     * @return string
     */
    public function getModule()
    {
        return 'doctrine';
    }

    /**
     * Config scope
     *
     * @return string
     */
    public function getScope()
    {
        return 'connection';
    }

    /**
     * Config name
     *
     * @return string
     */
    public function getName()
    {
        return 'orm_default';
    }
}

安装

此模块的安装使用 composer。有关 composer 文档,请参阅 getcomposer.org

在您的 composer.json 中放入以下内容

{
    "require": {
        "sandrokeil/easy-config": "~1.0"
    }
}

不必要 将此模块添加到您的 config/application.config.php

文档

您可以在以下链接中找到有关工厂使用的文档