依赖注入 php

Dependency injection php

我构建了一个简单的依赖项注入容器,我将其传递给需要它的 classes,一切正常,一切正常。

我的问题是说我有 2 class例如

class A {
    public function __construct() {

    }
}

class B {
    public function __construct(A $a) {

    }
}

我应该在 class 本身还是在注入容器中强制执行类型提示,例如;

$di->set('A', function() {
     return new A();
});

$di->set('B', function(A $a) {
     return new B($a);
});

我应该两者都做还是 either/or。

关于为什么使用一个比另一个更好的答案等等?

谢谢。

我会使用第一种情况,在 class 本身中强制执行类型提示。

这将使代码的读者清楚 class 的实际依赖项是什么。

如果您决定更改 DI 容器(或假设删除它)或在其他项目中重用 classes,最好在 class 本身中提供类型提示。

DI 容器只是为了帮助您管理依赖项。