evaneos/dic-it

又一依赖注入容器

v2.2.1 2013-11-01 00:00 UTC

This package is auto-updated.

Last update: 2024-09-22 16:34:26 UTC


README

DIC-IT是一个简单的依赖注入容器,具有可扩展的激活和注入策略。

配置

推荐的配置是在您的仓库根目录下创建一个config文件夹。所有配置都基于YAML文件。

示例YAML文件

parameters:
    MyParameter: 'Some parameter value'
    MyOtherParameter: 42
    MyParameters:
        nested_level:
            foo : foo
            bar : bar
            baz : foobar
classes:
    MyServiceName:
        class: \Fully\Qualified\ClassName
        arguments: [ @MyDependency, %MyParameter, %MyParameters.nested_level, 'Hard-coded value', $container, $env.ENV, $const.ROOT_PATH ]
    MyDependency:
        class: \Fully\Qualified\DependencyClassName
        props:
            MyProperty: %MyOtherParameter

参考

您可以在类定义中注入不同类型的引用。您可以得到其他服务实例、参数、容器本身、环境变量和常量值。

  • @ServiceName : 获取该定义的实例
  • %param : 获取容器中定义的参数
  • $container : 获取容器本身
  • $env.ENV_NAME : 获取环境变量
  • $const.CONST_NAME : 获取全局定义的常量值

使用includes

可以将配置拆分为多个文件,以简化依赖项管理

includes:
    - relative/file.yml
    - relative/another-file.yml
    
classes:
    ...

这允许您将参数与服务定义分开,例如。

默认对象生命周期

默认情况下,所有对象都是作为非单例对象创建的(这肯定会改变),因此每次容器解析引用时,都会创建请求对象的新实例。

管理循环依赖

默认情况下,由于默认对象生命周期,循环依赖处理得不好(堆栈溢出...)。要为特定对象启用循环依赖,至少必须将两个对象中的一个定义为单例。但这不会产生预期的结果,因此强烈建议将循环依赖中涉及的两个对象都定义为单例。