slightly-interactive/di-container

依赖注入容器。

1.0.1 2021-01-26 19:14 UTC

This package is auto-updated.

Last update: 2024-08-27 03:05:58 UTC


README

概览

DI Container是一个符合PSR-11规范的自动装配依赖注入容器。

使用方法

实例化容器

use SlightlyInteractive\DI;

$container = new Container();

解析类

$myClass = $container->get(MyClass::class);

默认情况下,容器每次请求相同的类时都会传递完全相同的实例。

您可以告诉容器每次请求给定的类时都创建一个新实例

$container->set(MyClass::class)->factory();

或者,在实例化容器时,您可以告诉它每次、对每个类都创建一个新实例

$container = new Container(Container::INSTANTIATE_FACTORY);

然后您可以让特定的类使用单个实例

$container->set(MySingleton::class)->singleton();

您可以将接口映射到特定的具体实例

$container->set(MyInterface::class)->map(MyClass::class);

您可以为特定的类这样做

class MyDependent
{
    public function __construct(
        RealClass $realClass,
        MyInterface $myInterface
    ) {
        ...
    }
    
    ...
}

$container->set(MyDependent::class)
    ->argument('myInterface', MyClass::class);
    

您还可以使用参数参数将非对象值传递给参数

class MyDependent
{
    public function __construct(
        RealClass $realClass,
        string $apiKey
    ) {
        ...
    }
    
    ...
}

$container->set(MyDependent::class)
    ->argument('apiKey', $_ENV['API_KEY']);