ua1-labs/firedi

此包已被弃用且不再维护。作者建议使用 sdfcloud/di 包代替。

FireDI 是一个强大且轻量级的 PHP 依赖注入库。

2.1.4 2019-11-27 06:27 UTC

This package is auto-updated.

Last update: 2024-09-05 18:30:28 UTC


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');