Учебники

4) CodeIgniter MVC

Что такое MVC?

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

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

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

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

Ниже приведены некоторые преимущества архитектурного шаблона MVC.

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

В этом уроке вы узнаете:

модель

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

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

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

контроллер

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

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

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

Посмотреть

Представление имеет дело с данными, представленными конечному пользователю. В веб-приложениях представления часто содержат HTML, CSS и, необязательно, JavaScript. Представления содержат минимальный программный код. Код, содержащийся в представлениях, обычно используется для циклического просмотра наборов данных, полученных в качестве параметров модели или вспомогательной функции для очистки данных или создания ссылок для редактирования записей. В большинстве современных веб-приложений обычно используются шаблоны, которые определяют свой собственный синтаксис, который больше похож на псевдокод и который может быть легко понят дизайнерами. При работе с 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 Framework

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

CodeIgniter Controller

Давайте теперь разберем, что только что произошло, когда мы загрузили вышеуказанный 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');
	}
}

ВОТ,

Теперь мы обновим метод индекса следующим образом

public function index()
    {
            $this->load->model('customers_model');

            $data['customer'] = $this->customers_model->get_customer(3);

            $this->load->view('welcome_message',$data);
    }

ВОТ,

  • $ This-> load-> модель ( ‘customers_model’); загружает модель клиентов.
  • $ data [‘customer’] = $ this-> Customers_model-> get_customer (3); вызывает метод get_customer для customer_model и передает параметр 3. В этом примере мы жестко закодировали значение, но в реальных приложениях это будет параметр из URI.
  • $ This-> load-> Вид ( ‘welcome_message’, $ данных); загружает представление welcome_message и передает переменную $ data в представление

Модель CodeIgniter

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

Создайте файл Customers_model.php в приложении / 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 extends CI_Model {…} определяет модель Customers_model, которая расширяет CI_Model.
  • публичная функция get_customer ($ id) {…} определяет метод get customer на основе идентификатора customer
  • $ data […] определяет статические значения нашего вымышленного клиента. Это должна быть строка, возвращенная из базы данных.
  • вернуть $ 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: // локальный: 3000 /

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

Резюме

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