Куда делегировать функции, которые являются частью контроллера, но слишком велики, чтоб оставлять их там?

Добрый день!
Допустим, есть метод регистрации, в котором кода строк на 200. Я раньше разбивал это на несколько методов (типа checkUser, addUser), которые находились в контроллере как приватные, однако это делало контроллер слишком толстым. Стоит ли выносить этот функционал в отдельный несвязанный компонент (библиотеку функций), или же стоит создать отдельный контроллер B, который будет реагировать на запросы контроллера А?

Буду благодарен за советы, спасибо.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
организуйте сервисный слой приложения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sggr
@sggr
PHP, Ruby, GO
Контроллер не должен в себе содержать логики, кроме извлечения вводимых пользователем данных, его обработки с помощью сервисов или моделей (на самом деле тут может быть какой угодно слой, вариантов масса) и ответа. В вашем случае есть два популярных подхода к решению задачи:
  • MVC - логика здесь будет находится в основном в модели. Достаточно простой и очевидный способ для новичков в ООП.
  • SOA (ссылка не очень удачная, но думаю смысл должен быть понятен) - способ для более опытных разработчиков, но и более гибкий и востребованный в больших приложениях со значительным сроком разработки и поддержки.

Для SOA вам действительно необходим будет DependencyInjection Container (или ServiceLocator), который новичкам достаточно сложно освоить. В MVC подходе все намного проще и очевиднее, поэтому рекомендую сначала попробовать его, а потом, когда упретесь в толстые модели, переходить к SOA и использовать сервисный слой.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы