Шаблон проектирования MVC

Шаблон проектирования MVC (Model-View-Controller), на русском «Модель-представление-контроллер» или «Модель-представление-поведение».

  • Model (Модель) - уровень абстракции, например для обработки данных из базы данных (обработанные данные передаются контроллеру). SQL.
  • View (Вид/Представление) - представление данных; вывод данных конечному пользователю (браузеру). В случае вебпрограмирования - это HTML код.
  • Controller (Контроллер/Поведение) - логика работы; управление данными, генерируемыми в моделях и последующая передача их в вид. Служит "мостом" между View и Model.

Запрос пользователя (URL)=⇒Контроллер=⇒⇐=Модель=⇒Вид/Представление

Главное правило View ничего не должен знать о Model. То есть нельзя делать запросы к базе данных из View.

  • Представление. Модуль вывода информации. Это может быть шаблонизатор или что-либо подобное, цель которого является только в выводе информации в виде HTML на основе каких-либо готовых данных.
  • Контроллер. Модуль управления вводом и выводом данных. Данный модуль должен следить за переданными в систему данными (через форму, строку запроса, cookie или любым другим способом) и на основе введённых данных решить:
    • Передавать ли их в модель
    • Вывести сообщение об ошибке и запросить повторный ввод (заставить модуль представление обновить страницу с учётом изменившихся условий)

Кроме того, контроллер обязан определять тип данных, полученных от модели (есть ли это готовый результат, отсутствие оного, либо сообщение об ошибке) и передавать информацию в модуль представления.

  • Модель. Модуль, отвечающий за непосредственный расчёт чего-либо на основе полученных от пользователя данных. Результат, полученный этим модулем, должен быть передан в контроллер, и не должен содержать ничего, относящегося к непосредственному выводу (то есть должен быть представлен во внутреннем формате приложения).

Создание собственного framework используя шаблон MVC по пунктам:

  • Действия который происходят при каждом запросе пользователя.
    1. Создание единой точки входа для всех запросов т.е. все запросы должны обрабатываться например через index.php. Обычно делается при помощи файла .htaccess и mod_rewrite.
    2. Создаем класс или функцию для автозагрузки наших классов.
    3. Создаем класс для хранения глобальных настроек используя шаблон Registry.
    4. Создаем class Router (шаблон Singlton): который содержит массив возможных страниц нашего сайта. Создаем метод getRoute который разбивает запрос пользователя ($_SERVER['REQUEST_URI']) на контроллер, действие(action) и параметры.
    5. Создаем класс View. Метод Render
  • Начинается ветвление программы, после передачи проанализированного Что такое URI с примерами на вход классу FrontController
    1. Реализация FrontController шаблон

Обработка запроса пользователя (действия одинаковые для всех запросов):

  1. index.php
  2. bootstrap.php - инициализация фреймверка
  3. routes.php

Начинается ветвление программы

  1. FrontController.php

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!