Я знаю, в контейнере Pimple, зависимости объявлены как
$container = new Pimple();
$container['db'] = function (){
return new SomeClass;
};
Мой вопрос заключается в том, что если я просто объявил зависимости как простые массивы, подобные этому.
$container = new Pimple();
$container['db'] = new SomeClass;
В чем разница?
Разница в том, что называется ленивая загрузка, конкретно ленивая инициализация.
В вашем первом примере SomeClass
фактически не создается, пока не будет запрошено. В вашем втором примере это создается сразу. Таким образом, даже если запрос никогда не попадает в базу данных, объект создается и соединение устанавливается.
Используя ваш первый пример, соединение с базой данных никогда не устанавливается, если запрос фактически не использует базу данных.
Других решений пока нет …