Итак, есть у меня интерфейс CartService и ElementService. Есть компонент Cart. Пользователь может передавать в Cart свои реализации CartService и ElementService, с которыми Cart будет работать.
Cart я инициирую в конфиге приложения, передаю в качестве свойств нужные мне реализации
'elementService' = ['class' => 'app\models\Element'],
'cartService' = ['class' => 'app\models\Cart'],
Дальше, возможно, туплю. В init Cart делают такое:
Однако, не понимаю, зачем это нужно. Даже если я передам какую-то дичь, а не имплементирующий CartService класс, никакой ошибки не будет. Зачем я тогда регистрирую зависимость от интерфейса, почему он не проверяет на этот интерфейс при сете?$this->_di = new Container;
//Регистрация зависимости от интерфейсов
$this->_di->set('blabla\CartService', $this->cartService['class']);
$this->_di->set('blabla\ElementService', $this->elementService['class']);
//Регистрация алиаса
$this->_di->set('cart', $this->cartService);
$this->_di->set('element', $this->cartService);