function __construct(B $b) {}}
Этот класс уже существует и создается через сервис локатор со своими зависимостями. Данный класс предусматривает наследование
Далее в какой-то момен времени мы изменяем этот класс потому что нам понадобилась зависимость, но помня что его уже могли наследовать мы делаем так
abstract class A
{
public function __constrruct(B $b, C $c = null)
{
...
$this->c = $c ?? $sr::getInstance()->create(C::class);
}
}
Теперь вопрос. А что если бы мы в самом начале для классов которые будут наследоваться создали DTO который бы инжектился в конструктор, тем самым классы наследники знали бы только о DTO. Пример
abstract class A
{
public function __constrruct(ContectAInterface $context)
{
$this->b = $context->getB()
$this->c = $context->getC();
}
}
И почему говрят что это еще хуже чем использовать service locator напрямую?
Имхо, странно.
для начала скажи зачем тебе наследоваться (зависеть) от нестабильного компонента.
Обсуждают сегодня