Нужно ли добавлять классы в контейнер в Laravel?

22 сентября, 12:16 Работа 3803 3

Почему лучше добавлять классы в контейнер и создавать их из контейнера а не через new? Ну понятно мы откидываем очевидные вещи такие как сингелтоны и прочие патерны (привязка к интерфейсу), в которых контейнер дает очевидные преимущества. Ну вот есть у меня обычный класс Helper или Services, зачем мне его биндить к контейнеру и создавать из него?

3 комментария
Сортировка:
Добавить комментарий
Виктор Чуй
Виктор Чуй 2019, 22 сентября, 17:22
0
Явно надо добавлять только в случае, если нужен один и тот же экземпляр (синглтон) во всем приложении, или если тайпхинтите интерфейсы, а методу надо предоставить конкретную реализацию интерфейса. В остальных случаях контейнер может сам подставить класс, без явной привязки к контейнеру. Почему так, а не создание через new - чтобы получить гибкость dependency injection и разруливание через dependency injection container, почитайте подробнее)
Vitaly Marchuk
Vitaly Marchuk 2019, 22 сентября, 16:20
0
В контейнер кладут классы, прежде всего для того, что бы иметь возможность управления зависимостями. Иными словами, что бы иметь возможность подменить класс А на класс Б, при первой необходимости не затрагивая основные структуры программы, а так же для того, что бы система знала, где искать какой-либо класс, когда его запрашивают. И сделано это было отнюдь не для удобства реализации Синглтонов и т.п. Иными словами, контейнер - это часть реализации DI-механизмов, а не "синтаксический сахар".
Vova P
Vova P 2019, 22 сентября, 15:20
0
В тестах их можно перекрыть и тем самым протестировать изолированно класс)

IT Новости

Смотреть все