Тонкие контроллеры (thin controller)

Evg Evg 1 Сентября 2022

Сейчас перечитываю различные статьи, где говорится, что: при разработке веб-сайта с использованием паттерна Model-View-Controller существует риск неправильного понимания роли контроллеров.

Model View Controller

Это приводит к тому, что контроллеры становятся огромными, а модели — маленькими, что, в свою очередь, затрудняет тестирование и поддержку вашего приложения.

Тонкие контроллеры

Идея термина «тощий контроллер» заключается в том, что обычно в ваших классах контроллеров вы размещаете только тот код, который:

  • обращается к данным запроса пользователя ( $_GET, $_POST…);
  • (опционально) делает некоторые основные приготовления к данным;
  • передает данные в модель(и) и извлекает результат, возвращенный моделью(ями);
  • и, наконец, возвращает выходные данные как часть View…

Класс контроллера должен избегать:

  • содержащие сложную бизнес-логику;
  • валидацию, проверку;
  • содержащий любой HTML или любой другой код презентационной разметки.

И т.д.

В общем, сейчас изучаю и пытаюсь делать небольшой рефакторинг, смотрю что тут можно улучшить и как.

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

А как дела обстоят у вас, уделяете вы внимание этому аспекту?

3 Ответа

  1. German German 1 Сентября 2022

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

  1. OleStep OleStep 1 Сентября 2022

    Проверку данных убирают из контроллеров расширяя Request, а бизнес-логику можно в Service.

    1. Evg Evg 1 Сентября 2022 (ред.)

      Ага, сперва проверку уберем, далее посмотрим.