Что такое MVC и как его использовать?

Привет! Я начинающий программист и хотел понять, что такое MVC. Читал разные статьи, но так и не понял пользы его. Прошу вас, объясните пожалуйста на пальцах структуру и поведение, а то у меня не хватает живого понимания. Например есть задача, сделать форму, которая бы сохраняла что-то в таблицу. Почему надо использовать именно MVC, а не напрямую с предзапросом и экранированием надо делать?
  • Вопрос задан
  • 481 просмотр
Решения вопроса 1
MVC - это про разделение логики на три основных куска:
1. View - отвечает только за формирование html - как пользователь будет видеть страничку
2. Model - отвечает за непосредственно логику по работе с данными, работает с базой данных и другими внешними сервисами. Именно тут следует реализовывать всякую валидацию, CRUD и прочее.
3. Controller - обрабатывает http запрос, подготавливает данные из него, чтобы их могла обработать Model, а потом передаёт их во View (опционально), либо самостоятельно формирует HTTP ответ из результата.

PS: это не книжное определение, а чисто моё, как я в большинстве случаев вижу реализацию MVC
Почему надо использовать именно MVC, а не напрямую с предзапросом и экранированием надо делать?

Не понял, про какое такое экранирование и предзапросы идёт речь, но MVC нужно просто для удобства расширения и изменения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
На мелких одноразовых задачах вида "сделать форму, которая бы сохраняла что-то в таблицу и забыть про нее" понять преимущества MVC невозможно.

MVC - это не про сделать, а про поддерживать и развивать.

Представим, что вместо обычной формы мы решим сделать ajax. Если у нас будет обычный винегрет из SQL, PHP и html, то придется переписывать его весь.
Если же у нас нормальная структура, то просто заменим во View вызов шаблонизатора на json кодирование. то есть поменяем одну строчку кода.

Допустим, в дополнение к форме нам нужно будет сделать консольную команду, которая берет данные из файла.

Если используется обычный говнокод-подход, то придется все писать заново.
При использовании MVC, надо будет в этой утилите написать только чтение из файла, а дальше просто вызвать метод модели, который у нас уже есть.
Ответ написан
Комментировать
@matios
Technical Team Lead
Советую почитать данную статью на хабре Реализация MVC паттерна на примере создания сайта-.... Там очень хорошо описано с примерами кода. Но следует понимать, что это совсем сырая версия которая описывает сами принципы. Современные фреймворки куда сложнее и универсальнее.
Ответ написан
Комментировать
DollyPapper
@DollyPapper
MVC - архитектурный шаблон. Это не какая-то конкретная задача "сделать форму", "посчитать расход за месяц и сделать отчёт". Это уровнем выше и это не про код как таковой. MVC как я думаю вы уже прочитали это 3 слоя приложения (хотя M на самом деле делится на большее кол-во слоев, но сейчас не об этом). MVC был придуман как раз чтобы отделять слой представления от слоя логики, чтобы при изменении представления (которое меняется обычно чаще чем логика) не сломать слой логики, то есть для развязывания кода друг от друга. На конкретном примере можно рассказать про например "посчитать расход за месяц и сделать отчёт". Понятно что посчитать расход за месяц и сгенерировать сам отчёт это дело именно логики приложения. Как отчёт будет отображаться логику нашу волновать не должно, по этому мы стараемся максимально обособленно писать слой M и на сколько это возможно обособленно писать слой V. Логика у нас просто посчитает всё, сгенерирует данные отчёта а дальше мы уже можем из слоя логики (M) послать во вне эти данные, а слой V у нас может быть вообще чем угодно, это и десктоп приложения для винды, линукс, или это веб или еще что в голову придет. Это при условии, что разделение произведено правильно и слой M у нас действительно независим, иначе под каждый слой представления V (веб, десктоп, мобилки) мы будем кучей if проверять, где же мы сейчас хотим отобразить и городить кучу бесполезного кода. В форматах ответа на Q&A ресурсах нельзя дать хорошее полное понимание архитектуры ПО, по этому советую почитать книжку Роберта Мартина "Чистая архитектура". Для новичка скорее всего будет вообще нихрена не понятно, но сделать это стоит, что-то в голове отложится, а может и понимание придет, кто его знает.
Ответ написан
Ваш ответ на вопрос

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

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