Печать

Введение в Модель-Вид-Контролер (MVC) Joomla

Joomla — это один из фреймворков, который широко использует паттерн MVC (Модель-Вид-Контролер). Model-View-Controller — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных части, так, что модификация одной из них оказывает минимальное воздействие на другие.

После того как посетитель сайта зашел на определенную ссылку на сайте, Joomla обрабатывает запрос и выясняет какую страницу запрашивает человек, определяет компонент который будет загружаться и обрабатывать все пришедшие переменные $_GET и $_POST ($_SESSION, $_COOKIE и другие — это уже обрабатывается в компоненте)

Если компонент был разработан согласно схеме MVC, то управление будет передано Контролеру (Controller), который в свою очередь решит как обрабатывать переменные, какую модель(и) загружать, а так же отправляет ответ пользователю о том или ином событие.

Модель (Model) работает с данными, которые необходимы компоненту, а именно выбирает, сохраняет, обновляет, удаляет и прочее... В большинстве случаев эти данные выбираются из базы данных сайта, но так же можно использовать в виде хранилища какие-либо веб-сервисы с других серверов, например RSS. Цель модели изолировать контролер и вид от деталей того, как были собраны и изменены и хрянятся данные компонента.

Вид или представление (View) отвечает за генерацию выходного кода, внешний вид. Часто это место называют «шаблоном» сайта. Он вызывает Модель и запрашивает у неё определенные данные. Модель собирает всю необходимую информацию и отдает её Виду, который это отправляет пользователю в виде HTML (т.е в месте с дизайном, картинками, стилями...). При этом HTML-код это только один из многочисленных вариантов. Легко можно сделать результатом работы компонента json, pdf, чистый текст, файл... При этом изменения коснуться только Вида.

Чтобы обеспечить дополнительную гибкость и мощность в шаблонах, упростить жизнь разработчика, для Вида предусмотрено разбиение на дополнительные уровни («layout»). Так одному виду может принадлежать несколько уровней, например для Вида «Форма» есть уровни «Форма», «Сообщение», «Ошибка отправления». Или такой пример: Вид списка категорий может иметь совершенно различный код HTML, но при этом данные отображаются одни и те же, т.е модель одна и та же. Для этого мы создаем различные уровни Вида.

Имея весь этот «арсенал» разработчик может создавать мощные и гибкие приложения, которые в будущем легко расширять. При этом для того чтобы изменить логику программы нужно изменить только Контролер, для изменения места хранения и способа обработки информации — изменить только Модель, а изменив Вид, меняется внешний вид компонента, который собственно и видит пользователь.
Интересная статья? Поделись ей с другими: