MVC – Model View Controller.
Это паттерн проектирования для построения веб-приложений. Так же, этот паттерн проектирования лежит в основе многих фреймворков.
Как я его понимаю:
- View – вид или представление. Это файлы, в которых HTML, которые отображают при помощи вложенности или же простых условий и циклов какую-то информацию
- Model – представление сущностей приложение с возможностью сохранять, редактировать и удалять данные из базы данных.
- Controller – контейнер для action’ов, которые представляют из себя веб-страницы или же адрес, по которым принимают, например, AJAX-запросы с фронтенда или же API-запросы из других мест. Контроллер должен работать исключительно с HTTP; тогда как, например, CLI туда попадать не должен. Отсюда вытекает и то, что всё приложение должно быть заточено под гибкую работу в контексте вышесказанного. Простейший пример: не нужно использовать глобальную переменную $_POST где-то, кроме контроллера.
Так же, у системы контроллер есть подсистема – роутинг. Роутинг, так сказать, документирует то, как, где, в каких формах и с какими параметрами открываются веб-страницы или же исполняются аякс- или же апи-запросы.
Логика приложения, я считаю, должна быть в менеджерах. То есть, в экшене контроллера принимается запрос, валидируется и фильтруется, далее он обрабатывается менеджером и сохраняется в базу данных посредством модели.
А менеджер – это паттерн проектирования, взятый из реальной жизни.