Введение в MVC для PHP


Каждый знает, что такое модель, представление, контролер. Как бы там ни было, давайте рассмотрим эти понятия более. Традиционный способ подключения к БД и выборка из нее:

<?php
$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’);
?>
<html>
<body>
<h1>List of Datas</h1>
 
<?php while ($row = mysql_fetch_object($query_results)) { ?>
<h2><?php echo $row->firstname ?></h2>
<h2><?php echo $row->lastname ?></h2>
<?php } ?>
</body>
</html>

Здесь мы наблюдаем стандартный способ подключения к базе данных через mysql_connect и последующее сохранение результатов выборки в переменной $result. Далее мы обычным образом публикуем данные, полученные из БД. Теперь давайте разберемся, как это будет происходить в MVC.

Модель

Данные в модели сохранены в ее атрибутах и доступ к ним из приложения возможен через специальные функции. Модель так же должна предоставлять возможности для хранения в ней представлений, а так же иметь инерфейсы для удобного доступа к перечню представлений. Всякий раз, когда вносятся изменения в модель , она должна в свою очередь «оповещать» об этом зарегистрированные в ней представления. 

Код ниже демонстрирует работу модели:

<?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
 
$data= methodName();
display_template(’data.tpl’);
 
?>

 

Представления
Представления должны создавать интерфейсы для взаимодействия с пользователем и постоянно их обновлять. Представления отслеживает изменения в модели и, когда она изменяется – вносятся корректировки в интерфейсы.

1
2
3
4
5
6
7
8
9
10
11
<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>

 

Как все это работает?
Когда пользователь обращается к некоторому url, контроллер обращается к представлению и модели и выводит нужную информацию. Т.е. контроллер работает как посредник между представлением и моделью.
 

Добавить комментарий


Защитный код
Обновить

Разработчику

Скрипты