grabbee
@grabbee

Куда вынести «неспецифическую» логику из контроллера?

Например.

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

И вот, нам например понадобилось добавить условие - сколько ресурсов в базе. И если их меньше 10 - ресурс не отдавать. Например. То есть, это снова неспецифическая логика. И её ни в сервис ни в контроллер помещать вроде не нужно. И логичным вынести также как и логику авторизации в `Voters` - только в что-то другое.

Как это "что-то другое" называется? Как это сделать?

---

PS: Сейчас я пока придумал добавить свою аннотацию "перехватчика" запроса к контроллеру на событие onKernelController. И все такие проверки произвести в нем. Избегая смешивания этой логики доп проверок с логикой сервисов и контроллеров относящихся к ресурсу. Как это назвать, не знаю.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
@galliard
Я конечно не знаю, что такое `Voters` и какова его роль в вашей системе, но в общим ситуация выглядит так:
1. Бизнес-логика пишется в сервисе.
2. Если для выполнения бизнес-кейса не выполняются необходимые для его выполнения условия - сервис бросает эксепшн.
3. Эксепшн от сервиса можно поймать как в контроллере, так и в глобальном обработчике ошибок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы