bigbit / smart-di
SmartContainer是从ODDIN ExampleContainer演变而来的。
v2.1.0
2020-03-31 17:00 UTC
Requires
- php: ^7.4.0
- bigbit/di-bootstrap: ^2.0.0
- bigbit/di-meta: ^1.0
- psr/container: ^1.0
Requires (Dev)
- phpstan/phpstan: ^0.11.15
- phpunit/phpunit: ^8.2
- symfony/cache: ^4.4
Suggests
- bigbit/oddin: ~2.0.0
Provides
- psr/container-implementation: 1.0.0
README
SmartContainer是从ODDIN示例演变而来的。
php7.4的依赖项
安装
composer require bigbit/smart-di
使用方法
使用静态createDefault工厂方法创建实例。
use Symfony\Component\Cache\Simple\ArrayCache; /** @var Psr\SimpleCache\CacheInterface */ $cache = new ArrayCache(); $container = SmartContainer::createDefault($cache);
覆盖服务定义
默认情况下,所有定义都是自动发现的。
要强制将服务工厂调用者放入容器中,请使用define方法。
$container->define(SomeClass::class, function(ContainerInterface $container) { return new SomeClass( $container->get(SomeDependency::class) ); });
添加原始依赖项
在某些情况下,服务构造函数需要原始值。
SomeClass服务的示例可能如下所示。
class SomeClass { public function __construct(SomeService $service, string $primitive, $mixed) { } }
通过值或调用者添加原始值。
use BigBIT\SmartDI\Interfaces\SmartContainerInterface; use Psr\Container\ContainerInterface; /** @var SmartContainerInterface $container */ $container->definePrimitive(SomeClass::class, 'primitive', 'someValue'); $container->definePrimitive(SomeClass::class, 'mixed', function(ContainerInterface $container) { return 'anotherValue'; } );