Пример шаблона проектирования MVC в PHP
Шаблон проектирования MVC представляет собой шаблон программной архитектуры «Модель-Представление-Контроллер». MVC — это один из способов организации кода и набор рекомендаций, описывающих ряд правил. Задача MVC заключается в том, чтобы наш код проще воспринимался и читался, а также быстрее обрабатывался компьютером.
Главная идея MVC — отделить внешний вид приложения от его логики. Здесь мы говорим о веб-приложениях, поэтому внешний вид в данном случае — это HTML-разметка и CSS-оформление. А вот под логикой понимаются разнообразные скрипты, классы, функции и пр.
Шаблон MVC стимулирует развитие модульных систем, поэтому разработчики получают возможность ускоренно обновлять, удалять либо добавлять функционал. Давайте рассмотрим главные принципы и определение схемы построения MVC на примере PHP.
Основные составляющие MVC
Как уже было сказано выше, главными составляющими шаблона проектирования MVC являются 3 части: Контроллер, Представление и Модель. Визуально это выглядит следующим образом:
Модель
«Модель» — это постоянное хранилище данных, которое используется по всей структуре. Компонент обеспечивает доступ к данным для просмотра, отбора, записи. По сути это мост между другими компонентами: «Контроллер» и «Представление».
«Модель» не «знает», что происходит с данными дальше. Её задачи — поиск и подготовка данных, передаваемых прочим компонентам MVC, а также обработка их в постоянном хранилище. По сути это «привратник», который стоит возле хранилища данных и не задаёт лишних вопросов, однако принимает все запросы, которые поступают. «Модель» — вершина структуры MVC, без неё невозможна связь между «Представлением» и «Контроллером».
Представление
Это часть системы, в которой данным, запрашиваемым у «Модели», задаётся финишный вид их вывода. В веб-приложениях, построенных с помощью MVC, «Представлением» называют компонент, где генерируется и отображается код HTML.
Кроме того, «Представление» перехватывает действия пользователей, которые после передаются «Контроллеру». Характерный пример — кнопка, генерируемая «Представлением». Если пользователь её нажимает, в «Контроллере» запускается действие.
Неправильно говорить, что «Представление» — это файл шаблона, ведь на деле «Представление» — это гораздо больше, чем шаблон. Следует уяснить, что данные не передаются «Представлению» непосредственно «Контролллером», т. к. между ними нет прямой связи, они соединяются посредством «Модели».
Контроллер
Он занимается обработкой данных, которые вводятся пользователем, а также участвует в обновлении «Модели». Этот компонент работает при взаимодействии с пользователем.
«Контроллер» можно назвать сборщиком информации, которая передаётся в «Модель» с последующей организацией хранения. Компонент не содержит другой логики, кроме той, что нужна для сбора входящих данных. Также он подключается лишь к одному «Представлению» и к одной «Модели». Таким образом создаётся система с 1-сторонним потоком данных, с одним выходом и одним входом в точках обмена.
Компонент получает задачи с целью выполнения лишь тогда, когда пользователь осуществляет взаимодействие с «Представлением». При этом не стоит путать «Контроллер» со шлюзом, присваивая ему задачи и функции, относящиеся к «Представлению». Распространённая ошибка — наделение «Контроллера» функциями, отвечающими только за передачу и обработку данных из компонента «Модель» в компонент «Представление».
MVC в PHP
Давайте напишем приложение на PHP с архитектурой MVC. Начнём с примера каркаса:
string = "MVC + PHP = Awesome!";
}
}
controller = $controller;
$this->model = $model;
}
public function output(){
return "" . $this->model->string . "
";
}
}
model = $model;
}
}
Итак, мы имеем проект с несколькими основными классами для каждой из частей шаблона. Давайте настроим между ними взаимосвязь:
output();
В нашем примере PHP MVC отсутствует специфический функционал для контроллера, а всё потому, что в веб-приложении взаимодействия пользователя не определены. Что касается представления, то этот компонент содержит весь функционал, ведь пример предназначен только для демонстрации.
Теперь расширим PHP-пример и покажем, как будем добавлять функционал контроллера, добавляя в приложение взаимодействия:
Итак, PHP-пример расширен базовым функционалом. А теперь посмотрим, как будет выглядеть настройка взаимодействий между компонентами:
{$_GET['action']}();
}
echo $view->output();
Запустив код, при нажатии на ссылку вы увидите строку, предназначенную для изменения данных.
Таким образом, можно сказать, что мы ознакомились с базовой теорией модели MVC, реализовав с его помощью простого PHP-приложения.
Источник: https://otus.ru/nest/post/787/


Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-07-09 » Индексация сайта: что это и как ускорить попадание страниц в поисковики
- 2025-07-09 » 4 маркетинговых трюка от Стива Джобса
- 2025-07-08 » Как мышление влияет на успех бизнеса, и причем тут эмоциональный интеллект
- 2025-07-08 » «Бомж-маркетинг» без бюджета: механика, тактики и результаты
- 2025-07-08 » Медицинский интернет-маркетинг: каналы, особенности и рекомендации
- 2025-07-04 » Утечка данных стоит дороже, чем их защита: почему вам нужна грамотная ИТ-инфраструктура
- 2025-07-04 » Персональные данные: правила хранения и обработки и изменения 2025 года
- 2025-07-04 » Владельцам сайтов: изменения в законе о персональных данных
- 2025-07-04 » Персональные данные: самый полный гайд на 2025 год
- 2025-07-04 » Штрафы за нарушения в работе с персональными данными с 30 мая 2025 года: утечка в интернет и неуведомление РКН
- 2025-07-04 » Новые штрафы в работе с персональными данными: что проверить прямо сейчас
- 2025-07-04 » Google выкатил 68-страничный гайд по промптам. Я прочитал его за вас и вытащил 4 главных правила
- 2025-07-04 » Как выстроить доверие и лояльность клиентов через точки контакта
- 2025-07-04 » Пять SEO-правил, которые реально работают в 2025 году
- 2025-06-10 » Кому нужно срочно подать уведомление в РКН об обработке персональных данных и как это правильно сделать
- 2025-06-10 » Что такое VPN и зачем он нужен?
- 2025-06-10 » Нейросети для создания видео: 7 инструментов и что они могут
- 2025-06-10 » ChatGPT, DeepSeek, Grok, Gemini доступны на русском бесплатно. Внедряем?
- 2025-06-10 » 12 нейросетей для работы с маркетплейсами: создание карточек и описаний для Wildberries и Ozon
- 2025-06-10 » 11 нейросетей для генерации изображений в 2025 году
- 2025-05-30 » Год назад то, что занимало у меня несколько дней работы, сейчас я делаю за 1-2 часа. Без преувеличений. И это только начало
- 2025-05-25 » Нейросети для написания текста: 7 сервисов в помощь копирайтеру
- 2025-05-25 » Сайты с качественным контентом смогут получать больше трафика после обновления алгоритмов в Поиске Яндекса
- 2025-05-07 » Почему страницы не индексируются Google: три типа проблем
- 2025-05-05 » Лидеры рейтинга самых дорогих компаний Рунета — 2025
- 2025-05-05 » Мы делали презентации 35 лет, а потом пришла нейросеть
- 2025-04-08 » Горшочек, рисуй: 10 бесплатных сервисов для генерации картинок
- 2025-04-08 » SEO-продвижение в 2025 году: 15 трендов, без которых ТОП не светит
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
Кто мало хочет, тот дешево стоит |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.