Изучаем паттерн MVC в PHP

в 7:37, , рубрики: Model View Controller, mvc, php, Веб-разработка, метки: , ,

Паттерны проектирования приложений все больше входят в нашу жизнь. Сегодня мы рассмотрим один из популярных паттернов — MVC и попробуем понять почему он так популярен.

image

Немного истории

Концепция MVC была описана в 1979 году Трюгве Реенскаугом тогда работающим над языком программирования Smalltalk в Xerox PARC. Оригинальная реализация описана в статье «Applications Programming in Smalltalk-80: How to use Model-View-Controller». Затем Джим Алтофф с командой разработчиков реализовали версию MVC для библиотеки классов Smalltalk-80.

Итак, что же за MVC то такой?

MVC — это шаблон проектирования, при использовании которого код разделяется на три основные части: Модель, Отображение, Контроллер (Model, View, Controller).

Модель

Как правило в модели реализовывается вся работа с базой данных/
Модель даёт контроллеру представление данных, которые запросил пользователь (сообщение, данные пользователя, новость и тд).

Отображение

Название говорит само за себя: здесь содержится весь HTML код, который в последствии будет показан пользователю.
Если у Вас не сайт-визитка, то Вы не обойдетесь одним шаблоном и в зависимости от ситуации контроллер выберет нужный.

Контроллер

В контроллере происходит вся обработка запросов, пришедших от пользователя(GET, POST), а так же осуществляется взаимодействие с Моделью и Отображением. То есть именно контроллер является связующим звеном.

В зависимости от полученных данных, контроллер обрабатывает их, вызывает нужную модель, передает в нее полученные параметры, модель работает с ними и возвращает например TRUE, тогда контроллер показывает нужное отображение.

Давайте разберем небольшой пример.

Предположим, что нам необходимо осуществить авторизацию пользователя.
Сначала он обратится к нашему контроллеру, давайте обзовем его controller_login.php. Еще нам потребутся модель для обработки данных model_login.php ну и давайте создадим шаблон с формой для входа — view_login.php.
Для начала рассмотрим диаграмму, потом разберемся, что к чему.

image

1. Пользователь обращается к нашему контроллеру.

2. Контроллер выводит страницу с формой.

3. Юзер вводит данные, контроллер получает POST запрос от юзера, обрабатывает его и…

4.… вызывает модель проверяя наличие пользователя и соответствует ли ему указанные логин и пароль.

5. Модель обращается к Базе Данных и получает TRUE или FALSE

6.Если юзер нашелся и все данные верны, то модель возвращает и в контроллер TRUE.

7.Контроллер показывает успешную авторизацию (или редирект)

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

Жду Ваших комментариев!

Автор: wapruks

* - обязательные к заполнению поля