Многие начинающие разработчики сталкиваются с проблемой контроля приложений, внесения изменений и поддержки кода, когда приложение начинает стремительно разрастается. Количество строк увеличивается до 10 тыс., нахождение логических ошибок становится кропотливой работой. Если учитывать что весь код находится в одном сценарии.
Возьмем в пример систему рейтингов.
Неопытный разработчик, внес бы все функции в один единственный сценарий functions.php, что не есть правильно.
В чем же преимущество MVC Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер»)?
1. Разделение компонентов (Модель, представление, контроллер)
2. Удобный контроль приложения
3. Нахождение логических ошибок (благодаря разделению на компоненты, вы можете легко определить в каком из них, допущена логическая ошибка)
Каждый компонент отвечает только тем требованиям, которым он соответствует:
Модель – это как бы ядро, отвечает за операции с данными. И возвращает данные в виде массивов, объектов, цифр и тд. Здесь не производятся никаких проверок на валидность.
Контроллер – это компонент отвечающий за логику, за проверки, за подключения каких либо сценариев. Отправляет проверенные данные в модель. После получения данных от модели, они отправляются в представление для вывода.
Представление – компонент, отвечающий за вывод информации. Получает обработанные данные от контроллер.
Теперь представим свою систему рейтингов в архитектуре MVC.
Модель будет отвечать математические и логические операции с данными, за запись данных и получение данных из БД. Получаем от контроллера число рейтинга и id рейтинга. Находим этот id в БД и прибавляем число рейтинга к текущему рейтингу. Возвращаем контроллеру id рейтинга и новый рейтинг.
Контроллер будет отвечать за прием и проверку данных отправленных пользователем и отправку, получение данных от модели. Принимаем от пользователя число рейтинга, к примеру 5 и id самого рейтинга. Проверяем что оба полученных элемента, числа. Затем отправляем эти данные в модель и получаем обновленные. После мы отправляем эти данные в представление, для вывода.
Представление будет выводить результат пользователю. Принимает данные от контролер, и выводит обновленный рейтинг.
В такой архитектуре легко найти логическую ошибку. И вносить какие либо изменения в логику.
P.S. Надеюсь все объяснил доступно, особенно для новичков.