Учебное пособие по PHP MVC Framework: пример CodeIgniter

Содержание:

Anonim

Что такое фреймворк PHP MVC?

PHP MVC - это шаблон проектирования приложения, который отделяет данные приложения и бизнес-логику (модель) от представления (представления). MVC означает модель, представление и контроллер.

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

Думайте о шаблоне проектирования MVC как об автомобиле и водителе.

У автомобиля есть лобовые стекла (вид), которые водитель (диспетчер) использует для отслеживания движения впереди, а затем скорости или торможения (модель) в зависимости от того, что он видит впереди.

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

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

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

  • Шаблон проектирования PHP MVC
  • Типы фреймворков PHP MVC
  • Перенос приложения для опроса общественного мнения на CodeIgniter
  • Параметры конфигурации базы данных
  • Создание нашей модели
  • Создание наших представлений
  • Тестируем наше приложение

Шаблон проектирования PHP MVC

Давайте теперь кратко обсудим каждый компонент шаблона проектирования MVC.

Модель - эта часть связана с бизнес-логикой и данными приложения. Его можно использовать для проверки данных, обработки данных и их хранения. Данные могут поступать из;

  • плоский файл
  • база данных
  • XML-документ
  • Другие достоверные источники данных.

Контроллер - это часть, которая обрабатывает запросы пользователей на ресурсы с сервера.

Например, когда пользователи запрашивают URL… /index.php?products=list, контроллер загружает модель продуктов для получения данных о продуктах, а затем выводит результаты в виде списка.

Вкратце, контроллер связывает модели и представления вместе в зависимости от запрашиваемых ресурсов.

Представления - эта часть посвящена представлению данных пользователю. Обычно это HTML-страницы.

Типы фреймворков PHP MVC

Выбор лучшего фреймворка PHP - непростая задача.

Вам не нужно писать свою собственную структуру, чтобы воспользоваться преимуществами MVC.

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

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

В таблице ниже кратко описаны некоторые из популярных фреймворков PHP и функции, которые предлагает каждый фреймворк.

Рамки Описание
CodeIgniter https://codeigniter.com/ Это один из самых популярных фреймворков PHP MVC. Он легкий и требует короткого обучения. Он имеет богатый набор библиотек, которые помогают быстро создавать веб-сайты и приложения. Пользователи с ограниченными знаниями в области программирования ООП также могут использовать его. Приложения, работающие на CodeIgniter, включают:
  • https://www.pyrocms.com/
  • http://www.shopigniter.com/
Кохана http://kohanaframework.org Это безопасный и легкий фреймворк HMVC с контроллером представления иерархической модели. Он имеет богатый набор компонентов для быстрой разработки приложений. Компании, использующие Kohana, включают:
  • https://go.wepay.com/
  • https://kids.nationalgeographic.com/
  • https://www.sittercity.com/
CakePHP www.cakephp.org Он смоделирован по образцу Ruby on rails. Он известен такими концепциями, как шаблоны проектирования программного обеспечения, соглашение по конфигурации, ActiveRecord и т. Д. Приложения на базе CakePHP включают;
  • http://invoicemachine.com/
  • http://www.fmylife.com/
www.framework.zend.com Zend Это мощный фреймворк;
  • Безопасный, надежный, быстрый и масштабируемый
  • Поддерживает Web 2.0 и создание веб-сервисов.
Он включает API от таких поставщиков, как Amazon, Google, Flickr, Yahoo и т. Д. Он идеально подходит для разработки бизнес-приложений. Приложения на базе Zend включают:
  • Pimcore CMS,
  • DotKernel.
Компании, использующие структуру Zend, включают:
  • BBC
  • Cisco
  • Webex
  • Offers.com

Перенос приложения для опроса общественного мнения на CodeIgniter

В этом руководстве мы создали приложение для опроса PHP. Здесь мы перенесем этот код в CodeIgniter.

  • Загрузите последнюю версию CodeIgniter со своего веб-сайта.
  • Извлеките содержимое заархивированного файла в каталог разработки в каталоге веб-сервера. В этом уроке мы будем использовать ciopinionpoll в качестве имени папки.
  • Перейдите по URL-адресу http: // localhost / ciopinionpoll /

Теперь мы собираемся портировать наше приложение для опроса общественного мнения на CodeIgniter. Напомним, что наше приложение было разделено на три основных компонента, а именно:

  • Фронт-контроллер - это часть, которая отвечает на запросы URL и возвращает запрошенную страницу. Этот код войдет в контроллер
  • Модель - это код, который отвечает на запрошенные данные и возвращает запрошенные данные. Этот код войдет в модель
  • Представления - это код, отвечающий за форматирование и отображение данных. Этот код войдет в представление
    • Перейдите в папку ciopinionpoll
    • Откройте файл database.php, расположенный в каталоге application / config.
    • Найдите следующие строки кода

Параметры конфигурации базы данных

  • Установите имя пользователя как root
  • Установите пароль на свой пароль root на локальном хосте
  • Имя базы данных для review_poll. Обратите внимание, что мы будем использовать базу данных, созданную на предыдущем уроке.
  • Сохраните изменения и закройте файл.

Создание нашей модели

Далее мы собираемся создать нашу модель, которая расширит CI_Model. CI_Model является частью библиотек CodeIgniter. Модель будет расположена в application / modelsview_poll_model.php

load->database();}public function total_votes(){$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');return $query->row()->choices_count;}public function get_results(){$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");$table_rows = '';for ($i = 1; $i < 5; $i++){$sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;";$result = $model->select($sql_stmt); $table_rows .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}public function add_vote($choice){$ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data);}}?>

ЗДЕСЬ,

  • «Class Opinion_poll_model расширяет CI_Model…» - это наша модель, которая расширяет CI_Model.
  • «… Parent :: __construct ();» вызывает конструктор CI_Model
  • «$ This-> load-> database ();» загружает библиотеку базы данных, чтобы наше приложение могло взаимодействовать с базой данных
  • «$ This-> db->» - активная запись CodeIgniter. Перейдите по этой ссылке для получения дополнительной информации об активной записи.

Создание нашего контроллера Давайте теперь создадим контроллер. Мы будем использовать контроллер CodeIgniter по умолчанию, расположенный в application / controllers / welcome.php. Замените его исходные коды следующим кодом.

load->model('opinion_poll_model');}public function index() {if ($this->input->post('submitbutton') && !$this->input->post('vote')) {echo "";}if ($this->input->post('vote')) {$this->opinion_poll_model->add_vote($this->input->post('vote'));$data['total_votes'] = $this->opinion_poll_model->total_votes();$data['rows'] = $this->opinion_poll_model->get_results();$this->load->view('results', $data);} else {$this->load->view('opinion_poll_form');}}}/* End of file welcome.php *//* Location: ./application/controllers/welcome.php */?>

ЗДЕСЬ,

  • «If (! Defined ('BASEPATH')) exit ('Прямой доступ к сценариям не разрешен');» гарантирует, что пользователи не имеют прямого доступа к классу контроллера
  • «Класс Добро пожаловать расширяет CI_Controller…» наш контроллер расширяет класс CI_Controller
  • «Публичная функция __construct ()» вызывает метод конструктора класса CI_Controller и загружает нашу модель Opinion_poll_model.
  • «Public function index ()…» - это функция, которая сопоставляется с index.php. он использует класс ввода CodeIgniter, чтобы проверить, было ли отправлено голосование, добавить его в базу данных, а затем отобразить результаты. Если массив сообщений входного класса пуст, он загружает страницу голосования.
  • «$ This-> input-> post ('…')» - это входной класс CodeIgniter, который получает содержимое глобальной переменной $ _POST.
  • «$ This- >view_poll_model-> add_vote ($ this-> input-> post ('vote'))» вызывает метод add_vote модели для добавления голоса в базу данных.

Создание наших представлений

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

opinion_poll_form.phpJavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript Library?

JQuery
MooTools
YUI Library
Glow

Теперь создадим страницу результатов results.php

JavaScript Libraries - Opinion Poll Results

JavaScript Libraries - Opinion Poll Results

What is your favorite JavaScript Library?

people have thus far taken part in this poll:

Return to voting page

Тестируем наше приложение

Предполагая, что корневой каталог вашего приложения - ciopinion, перейдите по адресу http: // localhost / ciopionpoll /

Нажмите кнопку ОК, вы увидите следующее предупреждающее сообщение.

Проголосуйте за своего любимого кандидата и нажмите ОК. Вы увидите следующую страницу результатов.

Вывод

CodeIgniter - это простой в освоении и использовании фреймворк PHP MVC, который может значительно сократить время, затрачиваемое на разработку приложений.

Резюме

  • Фреймворк - это набор библиотек, которые обеспечивают частичную реализацию общих задач.
  • PHP имеет ряд зрелых и протестированных MVC-фреймворков с открытым исходным кодом.
  • Хороший подход к разработке отделяет данные от презентации и поощряет использование единой точки входа в приложение.
  • Традиционные приложения PHP, которые следуют передовым методам проектирования приложений, могут быть перенесены на платформы MVC с минимальными изменениями.