hgraca/micro-di

此包已被放弃,不再维护。未建议替代包。

这是一个使用反射和服务定位器容器的小型依赖注入库,用于实例化和递归解析、实例化和注入依赖项。

1.0.0 2016-12-10 22:53 UTC

This package is auto-updated.

Last update: 2023-07-30 19:16:09 UTC


README

Author Software License Latest Version Total Downloads

Build Status Coverage Status Quality Score

这是一个使用反射和服务定位器容器的小型依赖注入库,用于实例化和递归解析、实例化和注入依赖项。

安装

要安装库,请运行以下命令,您将获得最新版本

composer require hgraca/micro-di

使用方法

工厂

Builder::buildFromFactory 中使用的工厂需要扩展 Hgraca\MicroDI\FactoryInterface

Builder::buildFromFactory 方法会实例化工厂并调用其上的 create 方法。传递给 Builder::buildFromFactory 的参数将在实例化工厂时以及调用 create 方法时使用。

  • 如果参数键与依赖项名称匹配,则将在 __construct() 中注入它们。
  • 它们将全部注入到 create() 中,包括容器中键为 '.context' 的任何内容,其中是相关工厂的完全限定名称。

依赖解析过程

构建器将解析并实例化依赖项。在实例化和调用带有 Builder::call 的方法时,依赖项将按以下优先级填充:

  1. 通过将依赖项名称与提供的参数名称匹配
  2. 如果是类/接口,它将尝试实例化它,这反过来
    1. 尝试从容器中获取它,通过在容器键中搜索类/接口的完全限定名称
      1. 如果找到键(类/接口的完全限定名称)
        • 如果是实例,则将其使用(单例
        • 如果是闭包,则将其使用来实例化所需的类(单例
        • 如果是工厂,则通过 Builder::buildFromFactory 方法使用它来构建所需的类,并且每次都会构建一个新的实例(使其不是 单例
      2. 如果找不到键(类/接口的完全限定名称)
        1. 如果是类,则将其实例化(递归解析和注入其依赖项),并将其缓存到容器中
        2. 如果是接口,则抛出错误
  3. 如果不是类/接口,它将尝试通过其名称在容器中找到依赖项。
  4. 如果无法找到所有必需的依赖项,则在实例化类时将抛出错误。

待办事项