ua1-labs / firedi
2.1.4
2019-11-27 06:27 UTC
Requires
- psr/container: ^1.0
- ua1-labs/firebug: 2.*
Requires (Dev)
- ua1-labs/firetest: 2.*
README
A light weight PHP dependency injection library featuring automatic, constructor based, dependency resolution. When you need a new object from a class definition just simply ask for it. Any dependencies type hinted on the constructor will be resolved and injected before the class is instantiated into an object.
FireDI 存在的整个原因就是为了管理和解决您的依赖。依赖注入设计模式通过为您解决这些依赖,提供了一种能力,可以在整个应用程序中解耦类的依赖。
特性
- 自动基于构造函数的依赖解析。您可以通过在构造函数中类型提示期望注入的对象来自动为您解决依赖。
- 循环依赖检测。
- 自动对象缓存。因此,当您多次请求对象时,将提供对象而无需运行依赖解析过程。
- 在 DI 容器中定义自己的依赖项。这对于在单元/集成测试中模拟依赖项非常有效。
- 在需要从容器外部定义特定依赖项的类的情况下,可以定义自己的依赖项。
文档
https://ua1.us/projects/firedi/
使用 Composer 安装 FireDI
composer require ua1-labs/firedi
入门
假设您想获取一个实例化的对象 MyClass1
。嗯,MyClass1
需要您将其构造函数中的 MyClass2
传递进去。FireDI 将解析 MyClass2
并自动将其注入到 MyClass1
中,并将实例化后的对象 MyClass1
返回给您。
MyClass1
class MyClass1
{
public function __construct(MyClass2 $myClass2) {}
}
MyClass2
class MyClass2 {}
FireDI 应用实例
// instantiate firedi
$firedi = new UA1Labs\Fire\Di();
// obtain an object and have it's dependencies resolved for you
$myClass1 = $firedi->get('MyClass1');