- → Программирование
- → PHP
- → Статьи
MVC PHP: Понятие, преимущества, пример
В данной статье мы разберемся с понятием MVC, и как, на примере, можно применить это в PHP.
Понятие MVC
MVC(Model-view-controller, «Модель-представление-поведение», «Модель-представление-контроллер») — это шаблон проектирования приложений, при котором управляющая логика поделена на три отдельных компонента таким образом, что модифицирование одного из них дает минимальное влияние на остальные.
Шаблон MVC хорошо применять при создании сложных проектов, где необходимо отделить работу php программиста (или разделить группу программистов на отделы), дизайнера, верстальщика, и т.д.
Шаблон MVC разделяет представление, данные, и обработку действий пользователя на три отдельных компонента:
MVC Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя своё состояние.
MVC Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
MVC Поведение (Controller). Интерпретирует данные, введённые пользователем, и информирует модель и представление о необходимости соответствующей реакции.
Для наглядности схемы действия шаблона MVC, ниже предоставлена иллюстрация.
Такие компоненты как представление и поведение зависят от модели, но никак не влияют на нее. Модель может иметь несколько представлений. Может быть, концепция MVCсложная для понимания, но если ее осмыслить, она становиться незаменимой при разработке приложений на PHP.
MVC в PHP
Особенностью при использовании MVC в PHP, является то, что существует одна точка входа в php приложение, которая, например, достигается следующим образом. Создается index.php через который будут обрабатываться все запросы, для этого создаем в папке с индексом файл .htaccess и помещаем в него такой код:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
В предоставленном коде, первой строкой, проверяется существование запрашиваемого файла, и если его нет, то идет перенаправление на index.php, иначе даже запросы картинок сайта будут перенаправляться на индекс. Последняя строка кода преобразовывает запросы вида index.php?route=chat/index у вид index.php/chat/index. Если у вас нет возможности использовать ModRewrite в своем приложении, то вам придется делать переадресацию вручную.
PHP Модель
Данные о PHP модели содержаться в ее атрибутах и могут быть изменены только через специальные функции. Модель может содержать в себе несколько представлений. Как правило, phpмодель это класс работающий с БД, конкретнее: запись, чтение, удаление. Естественно чтение информации с БД может быть реализовано несколькими представлениями (функциями). Как пример модель статей на сайте: можно получить конкретную статью из БД, список последних, популярных, какой-то категории… это все представления модели. Для наглядности ниже предоставлен пример php модели.
<?php function methodName() { $link = mysql_connect(’localhost’, ‘mysql_user’, ‘mysql_password’); if (!$link) { die(’Could not connect: ‘ . mysql_error()); } echo ‘Connected successfully’; mysql_close($link); $query_results= mysql_query(’select * from searchNames order by firstname desc’); $data = array(); while ($row = mysql_fetch_objects($query_results)) { $data[] = $row; } return $data; } ?>
PHP контролер (Поведение)
PHP контролеры получают запросы пользователей, которые мы направляли через index.php, и в соответствии с ними, корректируют работу модели. Правильнее сказать контролируют работу php приложения.
<?php $data= methodName(); display_template(’data.tpl’); ?>
PHP Представление
Представление отслеживает изменение в модели и создает или меняет интерфейс php приложения.
<html> <body> <h1>List of Datas</h1> <?php foreach ($data as $row) { ?> <h2><?php echo $row->firstname ?></h2> <h2><?php echo $row->lastname?></h2> <?php } ?> </body> </html>
Как работает данный PHP MVC шаблон?
При обращении пользователем по нужному url выбирается соответственный контролер, который обращается к представлению и модели, и выводится информация. Другими словами контролер в mvc есть связующим звеном модели и представления.
Преимущества MVC шаблона при создании PHP приложения
Как упоминалось выше это, прежде всего дифференциация разработчиков php сайта на отделы. Также увеличивается скорость работы php приложения, если создается крупный проект. Ну и то, что касается непосредственно самого php разработчика, это правильная структуризация php кода (все на своих местах, так легче для понимания).
MVC пример
Особо не будем зацикливаться на примере работы MVC, так как уже имеется пример mvc на php. Добавлю лишь еще пару схем для более глубокого понимания.
Еще одна схема работы MVC шаблона на PHP, она более чем доступна для понимания.
Теперь можно сказать, что понятие mvc раскрыто. Если вы впредь не использовали MVC шаблон при организации создания вашего проекта, то советую вам не медлить с применением полученных знаний. Если еще сомневаетесь – читайте пункт преимущества mvc шаблона. Если же имеете практические предложения по поводу использования mvc в php, просьба высказаться в комментариях.
Дальше: Сворачивание и разворачивание блока на javascript























Хостинг | Биржи трафика | Биржи ссылок |
Development — Slavik Nemchenko, Taras Moroz