sandrokeil / easy-config
Zend Framework 2 (zf2) 模块,用于检索特定模块选项,并提供一些抽象工厂以方便根据配置创建实例
1.3.0
2014-09-24 14:05 UTC
Requires
- php: ~5.3
- zendframework/zend-servicemanager: ~2.2
Requires (Dev)
Suggests
- zendframework/zend-stdlib: Zend\StdLib for AbstractOptionHydratorConfigFactory
This package is auto-updated.
Last update: 2024-08-28 22:42:27 UTC
README
您想通过模块配置来配置您的工厂吗?
您想通过模块配置来配置选项类以用于您的插件管理器吗?
您想通过模块配置向工厂添加其他服务吗?
本模块正是为此而生!
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
。
文档
您可以在以下链接中找到有关工厂使用的文档