phly / phly-expressive-configfactory
1.1.1
2020-01-14 13:47 UTC
Requires
- php: ^7.1
- psr/container: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7.1.1
- webimpress/coding-standard: dev-master@dev
- zendframework/zend-coding-standard: ~2.0.0@alpha
- zendframework/zend-servicemanager: ^3.4
Suggests
- zendframework/zend-servicemanager: Install zend-servicemanager to use the ConfigAbstractFactory
This package is auto-updated.
Last update: 2020-01-14 13:48:46 UTC
README
废弃
自2020-01-14起,此软件包已被废弃。鼓励用户迁移到Laminas,并使用phly/phly-configfactory作为此软件包的替代品。
此库提供从嵌套键提取配置的可重复使用的工厂。
安装
运行以下命令以安装此库
$ composer require phly/phly-expressive-configfactory
使用方法
将以下结构的工厂Phly\Expressive\ConfigFactory
分配给服务
config-<dot.separated.config.keys>
例如,如果您有以下结构
return [ 'cache' => [ 'adapters' => [ 'blog' => [ 'connection' => 'tcp://localhost:6349', 'username' => 'www-data', 'prefix' => 'blog', ], ], ], ];
并且您想要"blog"适配器配置,您将按以下方式分配依赖关系
return [ 'dependencies' => [ 'factories' => [ 'config-cache.adapters.blog' => \Phly\Expressive\ConfigFactory, ], ], ];
返回空数组或引发异常
默认情况下,如果在预期键中找不到配置,则工厂返回一个空数组。如果您想使其引发异常,可以按以下方式分配工厂
return [ 'dependencies' => [ 'factories' => [ 'config-cache.adapters.blog' => new \Phly\Expressive\ConfigFactory(false), ], ], ];
此操作是安全的,因为
ConfigFactory
实现了__set_state()
,允许使用var_export()
安全地序列化。
异常将指示它尝试检索的键层次结构。
在工厂中使用配置
在您的工厂中,当检索服务时,您将引用元名称。以下是我们上面的示例
use Psr\Container\ContainerInterface; class BlogCacheFactory { public function __invoke(ContainerInterface $container) { return new Cache($container->get('config-cache.adapters.blog')); } }
抽象工厂
自1.1.0起
如果您正在使用zend-servicemanager,您可以使用类Phly\Expressive\ConfigAbstractFactory
作为抽象工厂。这允许您省略为要检索的每个配置段添加工厂条目的操作。相反,您可以添加以下内容
return [ 'dependencies' => [ 'abstract_factories' => [ \Phly\Expressive\ConfigAbstractFactory::class, // OR new \Phly\Expressive\ConfigAbstractFactory(false), ], ], ];
存在时,它将处理任何以config-
为前缀的服务,并以与ConfigFactory
相同的方式操作。
注意事项
您应仅指定将返回数组的键。大多数容器仅允许从工厂返回数组或对象,否则将引发异常。对于需要对象的情况,Expressive通常将其转换为ArrayObject
实例,这使得这是安全的。