Введение в PHP MVC Framework


MVC означает "модель-представление-контроллер". Основная цель MVC в php-отделить бизнес-логику и прикладные данные от пользовательского интерфейса. Итак, в этом уроке мы узнаем о фреймворке PHP MVC.

Архитектура MVC в PHP

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

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

Контроллер получает запрос от пользователя, вызывает модель для выполнения требуемых операций и отправляет данные в представление. Он содержит бизнес-логику и обеспечивает связь между моделью и представлением. Контроллер является посредником между моделями и представлениями.

Зачем использовать PHP MVC Framework?

  • PHP MVC Framework помогает упростить разработку.
  • Он предоставляет стандартные методы для построения наших приложений.
  • Повышается производительность разработчика.
  • Соблюдение профессиональных стандартов кодирования.
Давайте создадим для примера страницы, выводящие пользователей всех и по одному.

Наш пример PHP имеет простую структуру; поместим каждый модуль MVC в одну папку. Есть три папки "controller”, “model”, "view".



  1. В controller мы создали файл UserController.php.
  2. Внутри model мы создали user.php.
  3. Внутри view мы создали файлы userlist.php и viewuser php.
Контроллер

Контроллер отвечает за прием запроса, его анализ, инициализацию и вызов модели, а также принимает ответ, данный моделью, и отправляет его в раздел представления. Задача контроллера - обрабатывать данные, которые пользователь вводит или отправляет через формы, а затем модель обновляет их соответствующим образом в базе данных. Точкой входа приложения будет index.php. Индексный файл делегирует все запросы контроллеру.

<?php
include_once("controller/UserController.php");
$controller = new UserController();
$controller->invoke();
?>
Наш класс контроллера имеет только одну функцию для вызова контроллера и конструктора. Конструктор создает экземпляр модели и вызывает класс model для извлечения данных. После этого он вызывает соответствующую передачу данных, поступающих из модели в раздел просмотра. Код приведен ниже.

Имя файла: UserController.php

<?php
include_once("model/User.php");
class UserController{
public $model;
public function __construct(){
$this->model = new User();
}
public function invoke(){
if(!isset($_GET['user'])){
$users = $this->model->getAllUser();
include 'view/userlist.php';
}
else{
$user = $this->model->getUser($_GET['user']);
include 'view/viewuser.php';
}}} ?>
Модель MVC на PHP

Модель представляет данные и логику приложения. Он отвечает за хранение, удаление, обновление данных приложения. Как правило, она включает в себя операции с базой данных.

В этом примере модель представлена одним классом: классом "user". Класс "пользователь" - это класс сущностей. Их единственная цель - сохранить данные. В приведенном ниже фрагменте кода вы можете заметить, как модель возвращает определенного пользователя или список всех пользователей.

Имя файла: user.php

<?php
class User
{
public $name;
public $city;
public $country;
public function __construct($name = null,$city = null,$country = null)
{
$this->name = $name;
$this->city = $city;
$this->country = $country;
}
public function getAllUser()
{
//жестко закодированное значение, если вы не используете базу данных
return array(
"Юрий" => new User("Юрий","Вологда","Россия"),
"John Smith" => new User("John Smith","Boston","USA")
);
}
public function getUser($name)
{
$users = $this->getAllUser();
return $users[$name];
}
}
?>
Представление

Представление отвечает за форматирование данных, полученных из модели, в форме, доступной пользователю.

Контроллер делегирует данные из модели конкретному элементу представления. Слой представления может использовать систему шаблонов для отображения html-страниц.

В нашем примере представление содержит только два файла: один для отображения сведений о конкретном пользователе, а другой - для отображения списка всех пользователей.

Имя файла: userlist.php

<html>
<head></head>
<title>Список пользователей</title>
<body>
<table>
<thead>
<tr>
<th>Имя</th>
<th>Город</th>
<th>Страна</th>
</tr>
</thead>
<tbody>
<?php
foreach ($users as $key => $user)
{
echo '<tr>
<td>
<a href="index.php?user='.$user->name.'">'.$user->name.'</a></td>
<td>'.$user->city.'</td>
<td>'.$user->country.'</td>
</tr>';
}
?>
</tbody>
</table>
</body>
</html>


Имя файла: viewuser.php

<html>
<head></head>
<title>Просмотр пользователя</title>
<body>
<?php
echo '<b>Имя: </b>' . $user->name . '<br/>';
echo '<b>Город: </b>' . $user->city . '<br/>';
echo '<b>Страна: </b>' . $user->country . '<br/>';
?>
</body>
</html>
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, php, mvc




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Идентичность и равенство объектов в Java
Идеальная компьютерная безопасность – миф. Но это все равно важно
Что такое база данных?