Платформа CodeIgniter MVC (контроллер представления модели) с примером

Что такое MVC?

Стандарты MVC для управления моделью-представлением. Это archiструктурный шаблон, который разделяет приложение на три основных компонента.

1. Модель касается бизнес-логики и взаимодействия с базой данных.

2. Контроллер координирует действия между моделью и представлением.

3. Представление отвечает за представление данных.

Фоллоwing некоторые преимущества MVC archiтекстурный узор

  • Слабая связь — компоненты существуют и функционируют независимо друг от друга.
  • Гибкость – можно легко вносить изменения в отдельные компоненты.
  • Повышенная производительность — над проектом одновременно могут работать несколько человек. Разработчики внешнего интерфейса могут работать над представлениями и презентациями, в то время как разработчики серверной части могут сосредоточиться на моделях, и, поскольку система слабосвязана, она работает в конце дня.

Модель

Модель отвечает за взаимодействие с источниками данных. Обычно это база данных, но это также может быть служба, предоставляющая запрошенные данные. Также общепринятой практикой является содержание бизнес-логики в моделях, а не в контроллере. Эту практику обычно называют «толстой моделью тощего контроллера».

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

Например, CodeIgniter использует встроенную библиотеку Active Record для поддержки моделей, в то время как другие платформы, такие как Laravel, используют Eloquent Object Relational Mapper (ORM), который облегчает доступ к данным.

контроллер

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

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

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

Вид

Представление имеет дело с данными, предоставляемыми конечному пользователю. В веб-приложениях представления часто содержат HTML, CSS и, при необходимости, JavaScript. Представления содержат минимум программного кода. Код, содержащийся в представлениях, обычно используется для циклического перебора коллекций данных, полученных в качестве параметров от модели или вспомогательной функции, для очистки данных или создания ссылок для редактирования записей. Большинство современных веб-приложений обычно используют механизмы шаблонов, определяющие собственный синтаксис, который больше похож на псевдокод и может быть легко понятен дизайнерам. При работе с CodeIgniter принято использовать короткие PHP-теги и управляющие структуры. Чтобы отобразить что-то в CodeIgniter, можно использовать следующую команду:wing код

<?=$title?>

В отличие от

<?php
echo $title;
?>

Структуры управления обычно записываются следующим образом.

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

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

Как работают фреймворки MVC?

Фоллоwing изображение показывает, что платформа MVC работает

MVC Frameworks работают

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

Контроллер CodeIgniter

Давайте теперь разберем, что произошло, когда мы загрузили указанный выше URL-адрес в веб-браузер.

Откройте файл контроллера Welcome.php, расположенный в приложении/контроллерах.

Вы должны увидеть следующееwing код

<?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.

Добавить подпискуwing код

<?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

Замените код на следующийwing

<!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>

Сохраните изменения

Загрузите подпискуwing URL-адрес в веб-браузере

http://localhost:3000/

Вы должны увидеть карточку клиента, как показано на изображении ниже.

Модель CodeIgniter

Выводы

  • MVC есть archiструктурный шаблон, который разделяет приложение на три основных компонента
  • Модель отвечает за взаимодействие с источниками данных.
  • Контроллер прослушивает входящие запросы на ресурсы от пользователей.
  • В веб-приложениях представления часто содержат HTML, CSS и, при необходимости, JavaScript.
  • Контроллер получает запрос от пользователя, при необходимости взаимодействует с моделью базы данных, а затем возвращает результат обратно в браузер в виде HTML-кода.