Я пытаюсь понять, как использовать контейнер DI.Вручную создать/использовать контейнер DI в PHP?
Скажем, у меня есть три класса: 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;
Является ли это путь?