Понимание архитектуры MVC
Обзор
При написании программы на CakePHP принято следовать шаблону MVC (Модель-Отображение-Контроллер). Программирование с применением этой модели разделяет ваше приложение на три основные части. Модель оперирует информацией Базы Данных, Отображение создает страницу с информацией из модели, а Контроллер обрабатывает запросы, сделанные пользователями.
Изображение 1: Основные запросы MVC
Рисунок 1 демонстрирует каркас MVC запроса в Cake. Рассмотрим простейший пример. Предположим пользователь Иван нажал на ссылку «Купить пирог!», эта ссылка ведет на вашу страницу.
- Иван нажимает на ссылку http://www.example.com/cakes/buy, и его браузер делает запрос к вашему веб-серверу.
- Диспетчер проверяет запрошенный адрес (/cakes/buy) и запускает необходимый Контроллер.
- Контроллер обрабатывает свою логику, например он проверяет вошел ли Иван в систему (залогинился ли он на сайте).
- Контроллер также взаимодействует с Моделями для обмена информацией. Как правило, Модели — это таблицы базы данных, но также вполне могут быть LDAP записями, RSS-лентами или простыми файлами. В данном случае Контроллер использует Модель для того чтобы выбрать из базы данных информацию о последней покупке Ивана.
- После того как Контроллер обработал данные — он передает их в Отображение. Отображение принимает данные и преобразует их в готовые страницы для отображения пользователям. Обычно результатом работы отображения является HTML документ, но не трудно получить PDF, XML документы или объект JSON. Все зависит от ваших потребностей.
- Отображение использует информацию из Контроллера для того чтобы создать готовый документ для пользователя. Иван видит в браузере готовую страницу.
Почти каждый запрос в вашем веб-приложении проходит по этой схеме. Некоторые подробности этого процесса мы узнаем позже, а пока запомните это.
Преимущества
Почему используется именно MVC? Потому что это испытанный шаблон проектирования приложений, который делает ваше приложение модульным и быстрым. Разделение приложения на Модель, Контроллер и Отображение делает его «легким на подъем». Очень легко добавить какие-то новые возможности и молниеносно изменить внешний вид приложения. Модульность позволяет работать над одним проектом сразу нескольким разработчикам. Так же ничто не мешает внести изменения в часть приложения без какого-либо ущерба другой его части.
Если вы никогда не создавали приложения, пользуясь этой архитектурой, то вам понадобится некоторое время чтобы привыкнуть, но мы уверены, когда вы создадите первый проект на Cake, то уже не захотите возвращаться к старым методам.