HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Немного теории</a></li>
1 <ul><li><a>Немного теории</a></li>
2 <li><a>Паттерн MVC и магазин быстрого питания</a></li>
2 <li><a>Паттерн MVC и магазин быстрого питания</a></li>
3 <li><a>Pattern в реальной разработке</a><ul><li><a>Controller</a></li>
3 <li><a>Pattern в реальной разработке</a><ul><li><a>Controller</a></li>
4 <li><a>Model</a></li>
4 <li><a>Model</a></li>
5 <li><a>View</a></li>
5 <li><a>View</a></li>
6 </ul></li>
6 </ul></li>
7 <li><a>Каков профит?</a></li>
7 <li><a>Каков профит?</a></li>
8 </ul><p>В этой статье поговорим про архитектуру программного обеспечения. Расскажем о том,<strong>что такое модель MVC</strong>, зачем нужен этот архитектурный паттерн в разработке, что такое контроллер в MVC и т. д. Постараемся объяснить все на примере и простыми словами.</p>
8 </ul><p>В этой статье поговорим про архитектуру программного обеспечения. Расскажем о том,<strong>что такое модель MVC</strong>, зачем нужен этот архитектурный паттерн в разработке, что такое контроллер в MVC и т. д. Постараемся объяснить все на примере и простыми словами.</p>
9 <p>Процесс взаимодействия пользователя и веб-сайта основан на постоянной обработке пользовательских запросов и выдаче соответствующих результатов. Любой интернет-сервис, будь то онлайн-кинотеатр, социальная сеть или интернет-банкинг, реагирует на действия пользователя довольно быстро. Чтобы обеспечить нужный уровень интерактивности и динамичности, в архитектуре ПО используют специальный паттерн под названием<strong>MVC</strong>. Что же такое модель MVC и в чем суть?</p>
9 <p>Процесс взаимодействия пользователя и веб-сайта основан на постоянной обработке пользовательских запросов и выдаче соответствующих результатов. Любой интернет-сервис, будь то онлайн-кинотеатр, социальная сеть или интернет-банкинг, реагирует на действия пользователя довольно быстро. Чтобы обеспечить нужный уровень интерактивности и динамичности, в архитектуре ПО используют специальный паттерн под названием<strong>MVC</strong>. Что же такое модель MVC и в чем суть?</p>
10 <h2>Немного теории</h2>
10 <h2>Немного теории</h2>
11 <p>Модель MVC представляет собой шаблон программирования, позволяющий делить логику программного приложения на 3 части. Расшифровка аббревиатуры довольно проста:</p>
11 <p>Модель MVC представляет собой шаблон программирования, позволяющий делить логику программного приложения на 3 части. Расшифровка аббревиатуры довольно проста:</p>
12 <ul><li><strong>M - Model (Модель)</strong>. Model получает данные от контроллера, осуществляет выполнение нужных операций, а потом передает данные во View;</li>
12 <ul><li><strong>M - Model (Модель)</strong>. Model получает данные от контроллера, осуществляет выполнение нужных операций, а потом передает данные во View;</li>
13 <li><strong>V - View (Вид, Представление)</strong>. View получает данные от Model с последующим выводом их для пользователя;</li>
13 <li><strong>V - View (Вид, Представление)</strong>. View получает данные от Model с последующим выводом их для пользователя;</li>
14 <li><strong>C - Controller (Контроллер)</strong>. Контроллер в MVC - это блок, обрабатывающий действия пользователя и проверяющий полученную информацию, которая затем передается в Model.</li>
14 <li><strong>C - Controller (Контроллер)</strong>. Контроллер в MVC - это блок, обрабатывающий действия пользователя и проверяющий полученную информацию, которая затем передается в Model.</li>
15 </ul><p>Вот такой вот круговорот. Можно подумать, что все запутано, но на деле это не так.</p>
15 </ul><p>Вот такой вот круговорот. Можно подумать, что все запутано, но на деле это не так.</p>
16 <p>Таким образом, модель MVC - это особый<strong>способ организации кода</strong>, предполагающий выделение блоков, каждый из которых будет отвечать за решение своих задач. Один отвечает за данные программного приложения, другой - за внешний вид, третий - за работу приложения. В этом контексте компоненты можно описать следующим образом:</p>
16 <p>Таким образом, модель MVC - это особый<strong>способ организации кода</strong>, предполагающий выделение блоков, каждый из которых будет отвечать за решение своих задач. Один отвечает за данные программного приложения, другой - за внешний вид, третий - за работу приложения. В этом контексте компоненты можно описать следующим образом:</p>
17 <ul><li><strong>Модель</strong>- отвечает за данные, определяет структуру программного приложения;</li>
17 <ul><li><strong>Модель</strong>- отвечает за данные, определяет структуру программного приложения;</li>
18 <li><strong>Представление</strong>- обеспечивает взаимодействие с пользователем. Определяет внешний вид программного приложения, а также способы его использования;</li>
18 <li><strong>Представление</strong>- обеспечивает взаимодействие с пользователем. Определяет внешний вид программного приложения, а также способы его использования;</li>
19 <li><strong>Контроллер</strong>- это компонент, отвечающий в паттерне MVC за связь между Моделью и Представлением. Его код определяет, как веб-сайт реагирует на действия пользователя. Можно назвать этот блок<strong>мозгом</strong>приложения.</li>
19 <li><strong>Контроллер</strong>- это компонент, отвечающий в паттерне MVC за связь между Моделью и Представлением. Его код определяет, как веб-сайт реагирует на действия пользователя. Можно назвать этот блок<strong>мозгом</strong>приложения.</li>
20 </ul><p>Контроллеры (controllers), Модели (models), Представления (views) в MVC - это все хорошо, но как лучше понять вышесказанную скучную теорию? Правильно, описать ее на абстрактном примере из реальной жизни. Пусть это будет заведение быстрого питания.</p>
20 </ul><p>Контроллеры (controllers), Модели (models), Представления (views) в MVC - это все хорошо, но как лучше понять вышесказанную скучную теорию? Правильно, описать ее на абстрактном примере из реальной жизни. Пусть это будет заведение быстрого питания.</p>
21 <p>Давайте представим, что мы пришли в кафе и хотим заказать бутерброд. На выбор есть сэндвичи с индейкой, ветчиной, тунцом. Не мудрствуя лукаво, выбираем индейку.<strong>Продавец</strong>за стойкой принимает заказ и сообщает на<strong>кухню</strong>, что приготовить. Повара, получив ваш запрос через продавца, выбирают нужные продукты и делают то, что вы хотите. В итоге вам приносят<strong>готовый продукт</strong>.</p>
21 <p>Давайте представим, что мы пришли в кафе и хотим заказать бутерброд. На выбор есть сэндвичи с индейкой, ветчиной, тунцом. Не мудрствуя лукаво, выбираем индейку.<strong>Продавец</strong>за стойкой принимает заказ и сообщает на<strong>кухню</strong>, что приготовить. Повара, получив ваш запрос через продавца, выбирают нужные продукты и делают то, что вы хотите. В итоге вам приносят<strong>готовый продукт</strong>.</p>
22 <p>Как вся эта ситуация будет выглядеть в контексте паттерна MVC:</p>
22 <p>Как вся эта ситуация будет выглядеть в контексте паттерна MVC:</p>
23 <ul><li>Model - это кухня, где повара готовят вам сэндвич (там происходит<strong>обработка вашего запроса</strong>);</li>
23 <ul><li>Model - это кухня, где повара готовят вам сэндвич (там происходит<strong>обработка вашего запроса</strong>);</li>
24 <li>View - это готовый сэндвич,<strong>который вы видите</strong>, держите в руках и с аппетитом кусаете;</li>
24 <li>View - это готовый сэндвич,<strong>который вы видите</strong>, держите в руках и с аппетитом кусаете;</li>
25 <li>Controller - это продавец за стойкой,<strong>принимающий ваш запрос и передающий</strong>заказ на кухню.</li>
25 <li>Controller - это продавец за стойкой,<strong>принимающий ваш запрос и передающий</strong>заказ на кухню.</li>
26 </ul><p>Теперь представьте, что вы зашли в социальную сеть "ВКонтакте". Когда вы в качестве пользователя переходите по ссылке "Сообщества", вы автоматически<strong>отправляете запрос (вспоминаем продавца и Контроллер)</strong>с пожеланием открыть свои сообщества ("хочу сэндвич с индейкой"). Ваш<strong>запрос обрабатывается на сервере (на кухне, то есть в Model)</strong>, в результате чего из базы данных "достаются" сообщества, на которые вы подписаны. Все это происходит практически мгновенно - быстрее, чем в реальности готовят сэндвич. Итог -<strong>открывается соответствующая веб-страница</strong>, где отображается список всех ваших сообществ, то есть вы получаете свой сэндвич, он перед вами, вы его видите (<strong>View</strong>). Обратите внимание, что открывается именно страница (сэндвич) с сообществами (с индейкой), а не с друзьями (тунцом) или новостями (ветчиной).</p>
26 </ul><p>Теперь представьте, что вы зашли в социальную сеть "ВКонтакте". Когда вы в качестве пользователя переходите по ссылке "Сообщества", вы автоматически<strong>отправляете запрос (вспоминаем продавца и Контроллер)</strong>с пожеланием открыть свои сообщества ("хочу сэндвич с индейкой"). Ваш<strong>запрос обрабатывается на сервере (на кухне, то есть в Model)</strong>, в результате чего из базы данных "достаются" сообщества, на которые вы подписаны. Все это происходит практически мгновенно - быстрее, чем в реальности готовят сэндвич. Итог -<strong>открывается соответствующая веб-страница</strong>, где отображается список всех ваших сообществ, то есть вы получаете свой сэндвич, он перед вами, вы его видите (<strong>View</strong>). Обратите внимание, что открывается именно страница (сэндвич) с сообществами (с индейкой), а не с друзьями (тунцом) или новостями (ветчиной).</p>
27 <p>Промежуточный итог:</p>
27 <p>Промежуточный итог:</p>
28 <ul><li>Продавец = Контроллер. Он хорошо знаком с меню и передает запросы на кухню;</li>
28 <ul><li>Продавец = Контроллер. Он хорошо знаком с меню и передает запросы на кухню;</li>
29 <li>Кухня = Model. Повара знают, какие надо выбрать ингредиенты, что на каких полках лежит, как приготовить блюдо, чтобы результат соответствовал ожиданиям пользователя;</li>
29 <li>Кухня = Model. Повара знают, какие надо выбрать ингредиенты, что на каких полках лежит, как приготовить блюдо, чтобы результат соответствовал ожиданиям пользователя;</li>
30 <li>Сэндвич = Представление. Это итоговый продукт, который пользователь сначала заказал, а потом получил.</li>
30 <li>Сэндвич = Представление. Это итоговый продукт, который пользователь сначала заказал, а потом получил.</li>
31 </ul><p>Вывод прост и логичен: когда речь идет о функционировании сложной и большой системы, ее лучше разбить на модули. Именно для этого и существует вышеописанная модель разработки ПО.</p>
31 </ul><p>Вывод прост и логичен: когда речь идет о функционировании сложной и большой системы, ее лучше разбить на модули. Именно для этого и существует вышеописанная модель разработки ПО.</p>
32 <h2>Pattern в реальной разработке</h2>
32 <h2>Pattern в реальной разработке</h2>
33 <p>С помощью вышеописанной архитектуры написан код ниже.</p>
33 <p>С помощью вышеописанной архитектуры написан код ниже.</p>
34 <h3>Controller</h3>
34 <h3>Controller</h3>
35 <p>Служит для обработки входящих реквестов. В веб-фреймворке это может выглядеть как определение конкретных URL-адресов, на которые будет попадать пользователь в случае перехода по ссылке либо после нажатия кнопки на сайте:</p>
35 <p>Служит для обработки входящих реквестов. В веб-фреймворке это может выглядеть как определение конкретных URL-адресов, на которые будет попадать пользователь в случае перехода по ссылке либо после нажатия кнопки на сайте:</p>
36 <h3>Model</h3>
36 <h3>Model</h3>
37 <p>Отвечает за данные, хранимые и обрабатываемые на сервере.</p>
37 <p>Отвечает за данные, хранимые и обрабатываемые на сервере.</p>
38 <h3>View</h3>
38 <h3>View</h3>
39 <p>Это уже HTML-шаблон, возвращаемый сервером после обработки реквеста. При корректной обработке вы получите нужную веб-страницу (в примере - это список друзей). Если что-то пойдет не так, результатом станет ошибка 404.</p>
39 <p>Это уже HTML-шаблон, возвращаемый сервером после обработки реквеста. При корректной обработке вы получите нужную веб-страницу (в примере - это список друзей). Если что-то пойдет не так, результатом станет ошибка 404.</p>
40 <h2>Каков профит?</h2>
40 <h2>Каков профит?</h2>
41 <p>Мы рассмотрели подход к проектированию и созданию программных приложений, предусматривающий выделение кода в такие компоненты, как Модель, Представление и Контроллер. Controller в паттерне MVC - это такой компонент, который служит для обработки входящих запросов. Модель извлекает из БД необходимую информацию. Представление определяет визуальный результат.</p>
41 <p>Мы рассмотрели подход к проектированию и созданию программных приложений, предусматривающий выделение кода в такие компоненты, как Модель, Представление и Контроллер. Controller в паттерне MVC - это такой компонент, который служит для обработки входящих запросов. Модель извлекает из БД необходимую информацию. Представление определяет визуальный результат.</p>
42 <p>Основная цель следования таким принципам - разделение реализации бизнес-логики от ее визуализации. Это повышает возможности повторного применения кода, повышает его читаемость, упрощает написание программ, облегчает расширение и техническую поддержку системы в будущем. </p>
42 <p>Основная цель следования таким принципам - разделение реализации бизнес-логики от ее визуализации. Это повышает возможности повторного применения кода, повышает его читаемость, упрощает написание программ, облегчает расширение и техническую поддержку системы в будущем. </p>
43 <p><em>Источники:</em></p>
43 <p><em>Источники:</em></p>
44 <ul><li><em>https://</em><em>ru.</em><em>hexlet.</em><em>io/</em><em>blog/</em><em>posts/</em><em>chto-</em><em>takoe-</em><em>mvc-</em><em>rasskazyvaem-</em><em>prostymi-</em><em>slovami;</em></li>
44 <ul><li><em>https://</em><em>ru.</em><em>hexlet.</em><em>io/</em><em>blog/</em><em>posts/</em><em>chto-</em><em>takoe-</em><em>mvc-</em><em>rasskazyvaem-</em><em>prostymi-</em><em>slovami;</em></li>
45 <li><em>https://javarush.ru/groups/posts/2536-chastjh-7-znakomstvo-s-patternom-mvc-model-view-controller;</em></li>
45 <li><em>https://javarush.ru/groups/posts/2536-chastjh-7-znakomstvo-s-patternom-mvc-model-view-controller;</em></li>
46 <li><em>https://skillbox.ru/media/code/chto_takoe_mvc_bazovye_kontseptsii_i_primer_prilozheniya/.</em></li>
46 <li><em>https://skillbox.ru/media/code/chto_takoe_mvc_bazovye_kontseptsii_i_primer_prilozheniya/.</em></li>
47 </ul><p>Также вам могут быть интересны следующие статьи с примерами реализации MVC на PHP:</p>
47 </ul><p>Также вам могут быть интересны следующие статьи с примерами реализации MVC на PHP:</p>
48 <ul><li>"<a>Модель проектирования MVC - что это? PHP и MVC</a>";</li>
48 <ul><li>"<a>Модель проектирования MVC - что это? PHP и MVC</a>";</li>
49 <li>"<a>Пример шаблона проектирования MVC в PHP</a>".</li>
49 <li>"<a>Пример шаблона проектирования MVC в PHP</a>".</li>
50 </ul>
50 </ul>