bigbit/smart-di

SmartContainer是从ODDIN ExampleContainer演变而来的。

v2.1.0 2020-03-31 17:00 UTC

This package is auto-updated.

Last update: 2024-08-29 05:18:31 UTC


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';
    }
);