Платформа CodeIgniter MVC (контроллер представления модели) с примером
Что такое MVC?
Стандарты MVC для управления моделью-представлением. Это архитектурный шаблон, который разделяет приложение на три основных компонента.
1. Модель касается бизнес-логики и взаимодействия с базой данных.
2. Контроллер координирует действия между моделью и представлением.
3. Представление отвечает за представление данных.
Ниже приведены некоторые преимущества архитектурного шаблона MVC.
- Слабая связь — компоненты существуют и функционируют независимо друг от друга.
- Гибкость – можно легко вносить изменения в отдельные компоненты.
- Повышенная производительность — над проектом одновременно могут работать несколько человек. Разработчики внешнего интерфейса могут работать над представлениями и презентациями, в то время как разработчики серверной части могут сосредоточиться на моделях, и, поскольку система слабосвязана, она работает в конце дня.
Модель
Модель отвечает за взаимодействие с источниками данных. Обычно это база данных, но это также может быть служба, предоставляющая запрошенные данные. Также общепринятой практикой является содержание бизнес-логики в моделях, а не в контроллере. Эту практику обычно называют «толстой моделью тощего контроллера».
Модель обычно записывает данные в базу данных, предоставляет механизм редактирования и обновления, а также удаления данных. В современном веб-приложении модели используют шаблоны проектирования доступа к данным, такие как активная запись, чтобы упростить взаимодействие с базой данных.
Например, CodeIgniter использует встроенную библиотеку Active Record для поддержки моделей, в то время как другие платформы, такие как Laravel, используют Eloquent Object Relational Mapper (ORM), который облегчает доступ к данным.
Контроллер
Контроллер прослушивает входящие запросы ресурсов от пользователей. Он действует как промежуточное звено между моделью и представлением, а иногда также реализует некоторые бизнес-правила. Допустим, контроллер получает запрос на регистрацию пользователя в базе данных.
Контроллер может выполнить проверку данных о том, что было отправлено, чтобы гарантировать, что все необходимые параметры были отправлены. Если чего-то не хватает, пользователь перенаправляется на страницу регистрации с соответствующим сообщением об ошибке. Контроллер также может запросить модель выполнить дополнительную проверку, проверив, существует ли уже отправленный адрес электронной почты. Если все правила проверки пройдены, контроллер отправляет данные в модель для обработки и ожидает ответа.
После того как модель обработала информацию и вернула положительный ответ, контроллер загружает соответствующее представление и передает данные, возвращенные из модели, в качестве параметра.
Просмотр
Представление имеет дело с данными, предоставляемыми конечному пользователю. В веб-приложениях представления часто содержат HTML, CSS и, при необходимости, JavaСценарий. Представления содержат минимум программного кода. Код, содержащийся в представлениях, обычно используется для циклического перебора коллекций данных, полученных в качестве параметров от модели или вспомогательной функции, для очистки данных или создания ссылок для редактирования записей. Большинство современных веб-приложений обычно используют механизмы шаблонов, определяющие собственный синтаксис, который больше похож на псевдокод и может быть легко понятен дизайнерам. При работе с CodeIgniter принято использовать короткие PHP-теги и управляющие структуры. Чтобы отобразить что-то в CodeIgniter, можно использовать следующий код
<?=$title?>
В отличие от
<?php echo $title; ?>
Структуры управления обычно записываются следующим образом.
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?><p> </li> <?php endforeach; ?>
Как видно из приведенного выше примера, представление будет использовать комбинацию PHP и HTML вместо того, чтобы заключать все в чистый PHP-код.
Как работают фреймворки MVC?
На следующем изображении показано, как работает платформа MVC.
Контроллер получает запрос от пользователя, при необходимости взаимодействует с моделью базы данных, а затем возвращает результат обратно в браузер в виде HTML-кода, который браузер интерпретирует в удобочитаемый формат и отображает пользователю.
Контроллер CodeIgniter
Давайте теперь разберем, что произошло, когда мы загрузили указанный выше URL-адрес в веб-браузер.
Откройте файл контроллера Welcome.php, расположенный в приложении/контроллерах.
Вы должны увидеть следующий код
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
ВОТ,
- define('BASEPATH') OR exit('Прямой доступ к скрипту запрещен'); предотвращает прямой доступ к контроллеру, если запрос не прошел через index.php. это в целях безопасности.
- class Welcome расширяет CI_Controller {…} определяет класс контроллера Welcome и расширяет родительский класс CI_Controller
- публичная функция index(){…} определяет метод индекса, который отвечает на URL-адрес
http://localhost:3000
- $this->load->view('welcome_message'); загружает представление Welcome_message, которое находится в каталоге application/views
Теперь мы обновим индексный метод следующим образом.
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
ВОТ,
- $this->load->model('customers_model'); загружает модель клиентов.
- $data['customer'] = $this->customers_model->get_customer(3); вызывает метод get_customer для customer_model и передает параметр 3. В этом примере мы жестко запрограммировали значение, но в реальных приложениях это будет параметр из URI.
- $this->load->view('welcome_message',$data); загружает представление Welcome_message и передает переменную $data в представление
Модель CodeIgniter
Давайте теперь создадим представление, на которое мы ссылались в приведенном выше коде. Для простоты наша модель не будет взаимодействовать с база данных но вернет статическую запись клиента. Мы будем работать с базами данных в следующих уроках.
Создайте файл Customers_model.php в папке application/models.
Добавьте следующий код
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
ВОТ,
- класс Customers_model расширяет CI_Model {…} определяет модель Customers_model, которая расширяет CI_Model.
- публичная функция get_customer($id) {…} определяет метод получения клиента на основе идентификатора клиента
- $data[…] определяет статические значения нашего вымышленного клиента. Это должна быть строка, возвращенная из базы данных.
- вернуть $данные; возвращает данные клиента.
То есть, это для нашей модели. Давайте теперь изменим представление Welcome_message.
Откройте файл Welcome_message.php, расположенный в
application/views/welcome_message.php
Замените код на следующий
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
Сохраните изменения
Загрузите следующий URL-адрес в веб-браузере
http://localhost:3000/
Вы должны увидеть карточку клиента, как показано на изображении ниже.
Резюме
- MVC — это архитектурный шаблон, который разделяет приложение на три основных компонента.
- Модель отвечает за взаимодействие с источниками данных.
- Контроллер прослушивает входящие запросы на ресурсы от пользователей.
- В веб-приложениях представления часто содержат HTML, CSS и, при необходимости, JavaСценарий
- Контроллер получает запрос от пользователя, при необходимости взаимодействует с моделью базы данных, а затем возвращает результат обратно в браузер в виде HTML-кода.