symfony service Сервис -- что это в symfony

Сервис -- на практике какой-то программный объект (пользовательский или предоставляемый бандлом как готовое решение каких-то задач), обычно находится в т.н. "контейнере сервисов"

При каждом запуске приложения, генерируется множество сервисов (например, session, doctrine, templating). Вызывая сервисы в контроллере, вы можете использовать методы их классов.

Что выносить в сервис?

Сервис - это такая рабочая бригада. Она призвана выполнять всю чёрную работу реализовывать непосредственный функционал, например, отправка писем, получение данных, изменение данных, подсчёт чего-то, создание сложных выборок.

Иногда на помощь сервисам в этом приходят Репозитории - кладовщики. Им сервисы делигируют работу с БД (получение данных и сохранение изменённых/новых данных). Чаще всего, репозитории вызываются уже из сервисов, и, кстати, механизм их вызова такаой же, т.к. в symfony4 и репозитории, и даже контроллеры ведут себя как сервисы - автозагружаются.

Контроллер - это вахтёр. В идеале он занимается только:

  • Получением входящих данных от клиента (Request)
  • Вызовом сервисов (которые реализуют необходимый функционал)
  • Отдачей данных клиенту (Response)

Могут возникать такие ошибки

Примеры работы с сервисами