hgraca / micro-di
此包已被放弃,不再维护。未建议替代包。
这是一个使用反射和服务定位器容器的小型依赖注入库,用于实例化和递归解析、实例化和注入依赖项。
1.0.0
2016-12-10 22:53 UTC
Requires
- php: >=7.0
- hgraca/cache: ^1.0.0
- hgraca/helper: ^1.1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- mockery/mockery: ^0.9
- phpunit/php-code-coverage: ~3
- phpunit/phpunit: ~5
- pimple/pimple: ~3
Suggests
- phpunit/php-code-coverage: ~3
- phpunit/phpunit: ~5
- pimple/pimple: ~3 - as the default container
This package is auto-updated.
Last update: 2023-07-30 19:16:09 UTC
README
这是一个使用反射和服务定位器容器的小型依赖注入库,用于实例化和递归解析、实例化和注入依赖项。
安装
要安装库,请运行以下命令,您将获得最新版本
composer require hgraca/micro-di
使用方法
工厂
在 Builder::buildFromFactory
中使用的工厂需要扩展 Hgraca\MicroDI\FactoryInterface
。
Builder::buildFromFactory
方法会实例化工厂并调用其上的 create
方法。传递给 Builder::buildFromFactory
的参数将在实例化工厂时以及调用 create
方法时使用。
- 如果参数键与依赖项名称匹配,则将在
__construct()
中注入它们。 - 它们将全部注入到
create()
中,包括容器中键为 '.context' 的任何内容,其中是相关工厂的完全限定名称。
依赖解析过程
构建器将解析并实例化依赖项。在实例化和调用带有 Builder::call
的方法时,依赖项将按以下优先级填充:
- 通过将依赖项名称与提供的参数名称匹配
- 如果是类/接口,它将尝试实例化它,这反过来
- 尝试从容器中获取它,通过在容器键中搜索类/接口的完全限定名称
- 如果找到键(类/接口的完全限定名称)
- 如果是实例,则将其使用(单例)
- 如果是闭包,则将其使用来实例化所需的类(单例)
- 如果是工厂,则通过
Builder::buildFromFactory
方法使用它来构建所需的类,并且每次都会构建一个新的实例(使其不是 单例)
- 如果找不到键(类/接口的完全限定名称)
- 如果是类,则将其实例化(递归解析和注入其依赖项),并将其缓存到容器中
- 如果是接口,则抛出错误
- 如果找到键(类/接口的完全限定名称)
- 尝试从容器中获取它,通过在容器键中搜索类/接口的完全限定名称
- 如果不是类/接口,它将尝试通过其名称在容器中找到依赖项。
- 如果无法找到所有必需的依赖项,则在实例化类时将抛出错误。