Мы все знаем, насколько плохие синглтоны , потому что они скрывают зависимости и по другим причинам .
Но во фреймворке может быть много объектов, которые нужно создать только один раз и вызвать отовсюду (регистратор, db и т. Д.).
Для решения этой проблемы у меня есть было сказано использовать так называемый «диспетчер объектов» (или контейнер служб , например, symfony), который внутренне хранит каждую ссылку на службы (регистратор и т. д.).
Но почему нет? ta Поставщик услуг так же плох, как чистый Синглтон?
Поставщик услуг также скрывает зависимости, и они просто завершают создание первой зависимости. Так что я действительно изо всех сил пытаюсь понять, почему мы должны использовать поставщика услуг вместо синглтонов.
PS. Я знаю, что, чтобы не скрывать зависимости, я должен использовать DI (как заявил Миско)
Я бы добавил: «В наши дни синглтоны не так уж плохи», - объяснил создатель PHPUnit здесь:
DI + Singleton решает проблему:
это довольно умно, даже если это не решает всех проблем .
Есть ли хорошее приемлемое решение для доступа к этим вспомогательным объектам, кроме DI и Service Container ?