Что такое MVC?
Стандарты MVC для Model-View-Control. Это архитектурный шаблон, который разделяет приложение на три основных компонента.
1. Модель касается бизнес-логики и взаимодействия с базой данных.
2. Контроллер координирует действия между моделью и видом.
3. View отвечает за представление данных.
Ниже приведены некоторые преимущества архитектурного шаблона MVC.
- Слабая связь - компоненты существуют и функционируют независимо друг от друга.
- Гибкость - можно легко вносить изменения в отдельные компоненты
- Повышенная продуктивность - над проектом могут одновременно работать более одного человека. Внешние разработчики могут работать над представлениями и презентацией, в то время как внутренние разработчики могут сосредоточиться на моделях, и, поскольку система слабо связана, она работает в конце дня.
В этом руководстве вы узнаете:
- Что такое MVC?
- Модель
- Контроллер
- Вид
- Как работают фреймворки MVC?
- Контроллер CodeIgniter
- CodeIgniter Модель
Модель
Модель отвечает за взаимодействие с источниками данных. Обычно это база данных, но это также может быть служба, предоставляющая запрошенные данные. Также распространена практика, когда бизнес-логика содержится в моделях, а не в контроллере. Эту практику обычно называют худым контроллером толстой модели.
Модель обычно записывает данные в базу данных, предоставляет механизм для редактирования, обновления и удаления данных. В современном веб-приложении модели используют шаблоны проектирования доступа к данным, такие как активная запись, чтобы упростить взаимодействие с базой данных.
Например, CodeIgniter использует встроенную библиотеку Active Record для помощи моделям, в то время как другие фреймворки, такие как Laravel, используют Eloquent Object Relational Mapper (ORM), который облегчает доступ к данным.
Контроллер
Контроллер прослушивает входящие запросы ресурсов от пользователей. Он действует как промежуточное звено между моделью и представлением, а также иногда реализует некоторые бизнес-правила. Допустим, контроллер получает запрос на регистрацию пользователя в базе данных.
Контроллер может выполнить проверку данных о том, что было отправлено, чтобы гарантировать, что все необходимые параметры были отправлены. Если чего-то не хватает, пользователь перенаправляется на страницу регистрации с соответствующим сообщением об ошибке. Контроллер также может запросить модель выполнить дополнительную проверку, проверив, существует ли уже отправленный адрес электронной почты. Если все правила проверки пройдены, контроллер отправляет данные в модель для обработки и ожидает ответа.
После того, как модель обработала информацию и вернула положительный ответ, контроллер загружает соответствующее представление и передает данные, возвращенные из модели, в качестве параметра.
Вид
Представление имеет дело с данными, представленными конечному пользователю. В веб-приложениях представления часто содержат HTML, CSS и, возможно, JavaScript. Представления содержат минимум программного кода. Код, содержащийся в представлениях, обычно используется для циклического перебора коллекций данных, полученных в качестве параметров от модели или вспомогательной функции, для очистки данных или создания ссылок для редактирования записей. Большинство современных веб-приложений обычно используют механизмы шаблонов, которые определяют свой собственный синтаксис, который больше похож на псевдокод и может быть легко понят дизайнерам. При работе с CodeIgniter обычной практикой является использование коротких тегов PHP и управляющих структур. Чтобы отобразить что-то в CodeIgniter, можно использовать следующий код
В отличие от
Структуры управления обычно записываются следующим образом
Как видно из приведенного выше примера, представление будет использовать комбинацию PHP и HTML вместо того, чтобы заключать все в чистый код PHP.
Как работают фреймворки MVC?
На следующем изображении показано, как работает фреймворк MVC.
Контроллер получает запрос от пользователя, взаимодействует с моделью базы данных, если это необходимо, затем возвращает результат обратно в браузер в форме HTML-кода, который браузер интерпретирует в удобочитаемый формат и отображается пользователю.
Контроллер CodeIgniter
Давайте теперь разберемся, что только что произошло, когда мы загрузили указанный выше URL-адрес в веб-браузер.
Откройте файл Welcome.php, расположенный на контроллере приложения / контроллеров.
Вы должны увидеть следующий код
load->view('welcome_message');}}
ЗДЕСЬ,
- определено ('BASEPATH') OR exit ('Прямой доступ к сценарию не разрешен'); предотвращает прямой доступ к контроллеру, если запрос не пришел через index.php. это сделано в целях безопасности.
- class Welcome расширяет CI_Controller {…} определяет класс контроллера Welcome и расширяет родительский класс CI_Controller
- public function 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-> модель ('customers_model'); загружает модель клиентов.
- $ data ['клиент'] = $ this-> customers_model-> get_customer (3); вызывает метод get_customer для customers_model и передает параметр 3. В этом примере мы жестко запрограммировали значение, но в реальных приложениях это будет параметр из URI.
- $ this-> load-> view ('welcome_message', $ data); загружает представление welcome_message и передает в представление переменную $ data
CodeIgniter Модель
Давайте теперь создадим представление, на которое мы ссылались в приведенном выше коде. Для простоты наша модель не будет взаимодействовать с базой данных, но будет возвращать статическую запись о клиенте. В следующих уроках мы будем работать с базами данных.
Создайте файл Customers_model.php в application / models
Добавьте следующий код
ЗДЕСЬ,
- class Customers_model extends CI_Model {…} определяет модель Customers_model, которая расширяет CI_Model.
- публичная функция get_customer ($ id) {…} определяет метод получения клиента на основе идентификатора клиента
- $ data […] определяет статические значения нашего фиктивного клиента. Это должна быть строка, возвращенная из базы данных.
- вернуть данные $; возвращает данные клиента.
То есть это для нашей модели. Давайте теперь изменим представление welcome_message
Откройте файл welcome_message.php, расположенный в
application/views/welcome_message.php
Замените код следующим
CodeIgniter MVC Basics Customer Details Card
Customer ID :
First Name :
Last Name :
Address :
Сохраните изменения
Загрузите следующий URL-адрес в веб-браузере
http: // локальный: 3000 /
Вы должны увидеть карточку клиента, как показано на изображении ниже.
Резюме
- MVC - это архитектурный шаблон, который разделяет приложение на три основных компонента.
- Модель отвечает за взаимодействие с источниками данных.
- Контроллер прослушивает входящие запросы ресурсов от пользователей.
- В веб-приложениях представления часто содержат HTML, CSS и, возможно, JavaScript.
- Контроллер получает запрос от пользователя, при необходимости взаимодействует с моделью базы данных, а затем возвращает результат обратно в браузер в виде HTML-кода.