Учебное пособие по PHP MVC Framework: пример CodeIgniter
Что такое PHP-фреймворк MVC?
PHP MVC — это шаблон проектирования приложений, который отделяет данные приложения и бизнес-логику (модель) от представления (представления). MVC означает модель, представление и контроллер.
Контроллер является посредником между моделями и представлениями.
Думайте о шаблоне проектирования MVC как об автомобиле и водителе.
В автомобиле есть ветровые стекла (вид), которые водитель (диспетчер) использует для наблюдения за движением впереди, а затем за скоростью или торможением (модель) в зависимости от того, что он видит впереди.
Зачем использовать PHP MVC Framework?
- PHP MVC Frameworks упрощает работу со сложными технологиями;
- Скрытие всех сложных деталей реализации
- Предоставление стандартных методов, которые мы можем использовать для создания наших приложений.
- Повышенная производительность разработчиков, поскольку базовая реализация таких действий, как подключение к базе данных, очистка пользовательского ввода и т. д., уже частично реализована.
- Соблюдение профессиональных стандартов кодирования
Шаблон проектирования PHP MVC
Давайте теперь кратко обсудим каждый компонент шаблона проектирования MVC.
Модель – эта часть связана с бизнес-логикой и данными приложения. Его можно использовать для проверки данных, обработки данных и их хранения. Данные могут быть получены из;
- плоский файл
- база данных
- XML-документ
- Другие действительные источники данных.
Контроллер – эта часть занимается запросами пользователей на ресурсы с сервера.
Например, когда пользователи запрашивают URL-адрес …/index.php?products=list, контроллер загрузит модель продуктов для получения данных о продуктах, а затем выведет результаты в виде списка.
Короче говоря, контроллер связывает модели и представления вместе в зависимости от запрошенных ресурсов.
Виды – эта часть посвящена представлению данных пользователю. Обычно это HTML-страницы.
Типы фреймворка PHP MVC
Выбор лучшего PHP-фреймворка — непростая задача.
Вам не нужно писать собственную структуру, чтобы воспользоваться преимуществами MVC.
Вам следует только попытаться создать свой собственный дизайн приложения, связанного с MVC, чтобы понять, как работают платформы MVC.
Как только вы освоитесь с тем, как работают платформы MVC, вам следует перейти к зрелым и уже протестированным платформам.
В таблице ниже кратко описаны некоторые популярные фреймворки PHP и функции, которые предлагает каждый фреймворк.
Рамки | Описание |
---|---|
|
Это один из самых популярных фреймворков PHP MVC. Он легкий и требует короткого обучения. Он имеет богатый набор библиотек, которые помогают быстро создавать веб-сайты и приложения. Его также могут использовать пользователи с ограниченными знаниями в области ООП-программирования. Приложения на базе CodeIgniter включают в себя; |
|
Это безопасная и легкая структура HMVC иерархического модельного контроллера представления. Он имеет богатый набор компонентов для быстрой разработки приложений. Компании, которые используют Kohana, включают; |
|
Он создан по образцу Ruby on Rails. Он известен такими концепциями, как шаблоны проектирования программного обеспечения, соглашение о конфигурации, ActiveRecord и т. д. CakePHP работающие приложения включают в себя; |
|
Это мощная структура;
Он включает API от таких поставщиков, как Amazon, Google, Flickr, Yahoo и т. д. Идеально подходит для разработки бизнес-приложений. Приложения на базе Zend включают в себя;
Компании, использующие структуру Zend, включают:
|
Портирование приложения опроса общественного мнения на CodeIgniter
В этом учебникмы создали приложение для опроса PHP. Здесь мы перенесем этот код в CodeIgniter.
- Скачать последняя версия CodeIgniter от их Веб-сайт.
- Извлеките содержимое заархивированного файла в каталог разработки на вашем веб-сервере. В этом уроке мы будем использовать ciopinionpoll в качестве имени папки.
- Перейдите по URL-адресу http://localhost/ciopinionpoll/
Сейчас мы собираемся перенести наше приложение для опроса общественного мнения на CodeIgniter. Напомним, что наше приложение было разделено на три основных компонента, а именно;
- Фронт-контроллер — это та часть, которая отвечает на запросы URL и возвращает запрошенную страницу. Этот код войдет в контроллер
- Модель — это код, который реагирует на запрошенные данные и возвращает запрошенные данные. Этот код войдет в модель
-
Представления – это код, отвечающий за форматирование и отображение данных. Этот код войдет в представление
- Перейдите в папку ciopinionpoll
- Откройте приложение база данных.php файл, расположенный в каталоге application/config.
- Найдите следующие строки кода
Параметры конфигурации базы данных
- Установите имя пользователя root
- Установите пароль на корневой пароль локального хоста.
- Имя базы данных для Opinion_poll. Обратите внимание, что мы будем использовать базу данных, созданную на предыдущем уроке.
- Сохраните изменения и закройте файл.
Создание нашей модели
Далее мы собираемся создать нашу модель, которая расширит CI_Model. CI_Model является частью библиотек CodeIgniter. Модель будет расположена в папке application/models. Opinion_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->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 .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } 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); } } ?>
ВОТ,
- «Класс Opinion_poll_model расширяет CI_Model…» — это наша модель, расширяющая CI_Model.
- «…родитель:: __construct();» вызывает конструктор CI_Model
- «$this->load->database();» загружает библиотеку базы данных, чтобы наше приложение могло взаимодействовать с базой данных
- «$this->db->» — активная запись CodeIgniter. Проверь это ссылке. для получения дополнительной информации об активной записи.
Создание нашего контроллера Давайте теперь создадим контроллер. Мы будем использовать контроллер CodeIgniter по умолчанию, расположенный в файле application/controllers/welcome.php. Замените его исходные коды следующим кодом.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('opinion_poll_model'); } public function index() { if ($this->input->post('submitbutton') && !$this->input->post('vote')) { echo "<script>alert('You did not vote!');</script>"; } 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 (!define('BASEPATH')) exit('Прямой доступ к скрипту не разрешен');» гарантирует, что пользователи не получат прямого доступа к классу контроллера
- «класс Welcome расширяет CI_Controller…» наш контроллер расширяет класс CI_Controller
- «публичная функция __construct()» вызывает метод конструктора класса CI_Controller и загружает нашу модель Opinion_poll_model
- «публичная функция index()…» — это функция, которая отображается в index.php. он использует класс ввода CodeIgniter, чтобы проверить, было ли отправлено голосование, добавить его в базу данных, а затем отобразить результаты. Если массив сообщений входного класса пуст, он загружает страницу голосования.
- «$this->input->post('…')» — это входной класс CodeIgniter, который захватывает содержимое глобальной переменной $_POST.
- «$this->opinion_poll_model->add_vote($this->input->post('vote'))» вызывает метод модели add_vote для добавления голосования в базу данных.
Создание наших представлений
Напомним, из предыдущего примера у нас было две HTML-страницы: одна для голосования, а другая для результатов. Для создания представлений мы будем использовать тот же HTML-код с минимальными изменениями. Создайте следующие файлы в каталоге application/views.
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript Library?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
Давайте теперь создадим страницу результатов results.php.
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
Тестирование нашего приложения
Предполагая, что корневой каталог вашего приложения — ciopinion, перейдите в http://localhost/ciopionpoll/
Нажмите кнопку «ОК», вы увидите следующее предупреждающее сообщение.
Проголосуйте за своего любимого кандидата, затем нажмите «ОК». Вы увидите следующую страницу результатов.
Заключение
CodeIgniter — это простая в освоении и использовании среда PHP MVC, которая может значительно сократить время, затрачиваемое на разработку приложений.
CodeIgniter — это простая в освоении и использовании среда PHP MVC, которая может значительно сократить время, затрачиваемое на разработку приложений.
Резюме
- Фреймворк — это набор библиотек, обеспечивающих частичную реализацию общих задач.
- PHP имеет ряд зрелых и протестированных фреймворков MVC с открытым исходным кодом.
- Хороший подход к разработке отделяет данные от представления и поощряет использование единой точки входа в приложение.
- Традиционные PHP-приложения, соответствующие передовым практикам проектирования приложений, можно переносить на платформы MVC с минимальными изменениями.