我试图了解如何使用 DI 容器。
假设我有三个类:A、B 和 C 定义如下:
class A {}
class B
{
private $a;
public function set_a(A $a)
{
$this->a = $a;
}
}
class C
{
private $b;
public function set_b(B $b)
{
$this->b = $b;
}
}
现在我并没有真正得到的是我应该在 index.php 中写的内容。我读过实例化一个容器然后将它传递给我的对象以便他们可以使用它不是一件好事,因为它使我的对象依赖于容器。但这是否意味着我必须在 index.php 中编写类似这样的内容:
$container = new Container();
$container->a = function($ctnr) {
return new A();
}
$container->b = function($ctnr) {
$b = new B();
$b->set_a($ctnr->a);
return $b;
}
$container->b = function($ctnr) {
$c = new C();
$c->set_b($ctnr->b);
return $c;
}
$c = $container->c;
这是要走的路吗?