Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Объекты в Service Locator могут быть добавлены напрямую, через конфигурационный файл, да и вообще любым удобным программисту способом.
set-метод добавляется из интерфейса— скорей интерфейс обязует класс реализовать метод.
$orderModel->setRepository(new MySQLOrderRepository());
Создаёт инстанс класса MySQLOrderRepository сразу. Исользуя lazy-loading используя лямбду будет более экономичным решением, если учесть, что в проекте таких вызовов могут быть тонны. Всё равно каждый раз надо грузить в сценарий лишь используемые классы.$orderModel->setRepository(function () { return new MySQLOrderRepository()});
Inversion of Control: Методы реализации с примерами на PHP