Description
Надо чтобы из конфига контейнера можно было определять будет отдан синглтон (инстанс созданный ранее) или же создастся новый при каждом вызове get.
Пример:
Некий сервис требует другой класс (допустим дебагер для консоли) он должен всегда создаваться по новой иначе неправильно отображает инфу для модулей которые его вызывают. В итоге везде где стоит зависимость такого сервиса он отображается неправильно т.к. везде суется инстанса от первого вызова container->get. Нельзя совать вызов фабрики вовнутрь сервиса иначе мы их свяжем. Конечному объекту не нужно управлять контейнером, ему просто нужна зависимость, но указывать single/new надо где-то выше. Полагаю в конфиге контейнера.
Пример-2:
Какой-нибудь билдер, мы хотим чтоб он каждый раз был новый, но при этом для создания самого билдера нужны какие-нибудь зависимости, которые хочется чтоб разрешил контейнер
В yii2 за это отвечали секции конфига container: singletons, instances, а вызов был всегда однотипен.
У конкурентов сделано так:
https://php-di.org/doc/php-definitions.html#factories
return [
'Database' => DI\factory(function () {...})
];
что вернет новый инстанс, а не синглетон.