Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
/* @var $adapter \Zend\Db\Adapter\Dapter */
$adapter = $this->getServiceLocator()->get('db-adapter');
И если ранее в конструктор передавался интерфейс, я после удачной компиляции более менее буду уверен в корректности программы. Передача строки не гарантирует ничего.
Тем более, что с ленивой загрузкой это обнаруживается только во время выполнения.
Немного не понял преимуществ идеи.
Какие именно проблемы появляются?
IoC приколен, но вот что не нравится — это концентрация сложности в конфигах, которые к тому-же plain-text`ом пишутся без code-completion`а и проверок.
$user = new User(new FileStorage());
User должна быть независимой от FileStorage. А передача снаружи конкретного экземпляра — IoC (через DI, если быть точным) не нарушает. Откуда этот экземпляр взялся — вопрос отдельный совершенно.
Разработка архитектуры приложения с использованием инверсии зависимости