Например есть такой код:
class A {
private $b;
public function __construct() {
$this->b = new B();
}
}
class B {
// ...
}
т.к. класс - A имеет зависимость от класса B, для этого использую композицию, чтобы при удалении класс А - удалялись все его зависимости.
Но нужно сделать так, чтобы можно было легко подменить класс B - на любой другой класс, с похожим поведением.
Для этого создал интерфейс:
class B implements bInterface {
// ...
}
interface bInterface {
..
}
Но теперь, непонятно, как внедрить эту зависимость в класс А - и сохранить композицию ?
Есть предположение, что нужно делать так:
class A {
private $b;
public function __construct(bInterface $b) {
$this->b = new $b();
}
}
class B implements bInterface {
// ...
}
interface bInterface {
..
}
$a = new A(B::class);
но не уверен что делают именно так.
ps: знаю, что это можно легко сделать DI-контейнеры, но сейчас нужно без них.