thecodingmachine / common-factories
本项目提供可以直接用于符合container-interop/service-provider标准的提供者中的实用工厂。
v0.4.1
2018-08-17 21:27 UTC
Requires
- php: >=5.4
- container-interop/service-provider: ^0.4
- psr/container: ^1.0
Requires (Dev)
- mouf/picotainer: ^1.0
- phpunit/phpunit: ^4.5
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-06 23:27:35 UTC
README
container-interop/service-provider的实用工厂
工作正在进行中。
本项目是container-interop组的成员之一。它试图通过容器无关的配置方式来解决跨框架模块(也称为包)的问题。
本项目目标
本项目提供可以直接用于符合container-interop/service-provider标准的提供者中的实用工厂。
这些通用工厂可以被编译/缓存的容器检测到。本包的目标是提供一组有用的类,这些类还可以被优化容器预先处理以获得最佳性能。
用法
只需在声明你的提供者的包中引入此包
到目前为止,该包有thecodingmachine供应商名称。它有望迁移到container-interop/common-factories
composer require thecodingmachine/common-factories
然后,你可以使用以下3个可用的类之一
创建别名
使用Alias
类轻松创建别名。
public function getFactories() { return [ 'myAlias' => new Alias('myService') ] }
可以轻松替换
public function getFactories() { return [ 'myAlias' => function(ContainerInterface $container) { return $container->get('myService'); } ] }
创建参数
使用Parameter
类在容器中添加一个标量(或标量数组)条目
public function getFactories() { return [ 'DB_HOST' => new Parameter('localhost') ] }
可以轻松替换
public function getFactories() { return [ 'DB_HOST' => function() { return 'localhost'; } ] }
向服务数组中添加服务
使用AddToArray
类将新服务推送到现有数组中
public function getExtensions() { return [ MyTwigExtension::class => function() { return new MyTwigExtension(); }, 'twig.extensions' => new AddToArray(MyTwigExtension::class) ] }
可以轻松替换
public function getExtensions() { return [ MyTwigExtension::class => function() { return new MyTwigExtension(); }, 'twig.extensions' => function(ContainerInterface $container, array $extensions = []) { $extensions[] = $container->get(MyTwigExtension::class); return $extensions; } ] }