Что такое PHP MVC Framework?
PHP MVC — это шаблон проектирования приложения, который отделяет данные приложения и бизнес-логику (модель) от представления (представления). MVC расшифровывается как Model, View & Controller.
Контроллер является посредником между моделями и видами.
Думайте о модели проектирования MVC как о машине и водителе.
У автомобиля есть ветровые стекла (вид), которые водитель (диспетчер) использует для мониторинга движения вперед, затем скорости или тормоза (модель) в зависимости от того, что он видит впереди.
Зачем использовать PHP MVC Framework?
- PHP MVC Frameworks упрощает работу со сложными технологиями;
- Сокрытие всех сложных деталей реализации
- Предоставление стандартных методов, которые мы можем использовать для создания наших приложений.
- Повышение производительности труда разработчиков. Это связано с тем, что базовая реализация таких действий, как подключение к базе данных, очистка пользовательского ввода и т. Д., Уже частично реализована.
- Соблюдение профессиональных стандартов кодирования
В этом уроке вы узнаете
- PHP MVC Design Pattern
- Типы PHP MVC фреймворка
- Портирование приложения для опроса общественного мнения на CodeIgniter
- Настройки конфигурации базы данных
- Создание нашей модели
- Создание наших представлений
- Тестирование нашего приложения
PHP MVC Design Pattern
Давайте теперь кратко обсудим каждый компонент шаблона проектирования MVC.
Модель — эта часть связана с бизнес-логикой и данными приложения. Он может использоваться для проверки данных, обработки данных и их хранения. Данные могут поступать из;
- плоский файл
- база данных
- XML документ
- Другие действительные источники данных.
Контроллер — эта часть занимается запросами пользователей на ресурсы с сервера.
Например, когда пользователи запрашивают URL-адрес … / index.php? Products = list , контроллер загружает модель продуктов для получения данных о продуктах, а затем выводит результаты в виде списка.
В двух словах, контроллер связывает модели и представления вместе в зависимости от запрашиваемых ресурсов.
Представления — эта часть посвящена представлению данных пользователю. Обычно это в виде HTML-страниц.
Типы PHP MVC фреймворка
Выбор лучшего фреймворка PHP — это сложная задача.
Вам не нужно писать свой собственный фреймворк, чтобы воспользоваться преимуществами MVC.
Вам следует только попытаться создать свой собственный проект приложения, связанный с MVC, чтобы понять, как работают инфраструктуры MVC.
Когда вы освоитесь с тем, как работают фреймворки MVC, вам следует перейти к зрелым и уже протестированным фреймворкам.
В таблице ниже кратко описаны некоторые популярные фреймворки php и функции, которые предлагает каждая фреймворк.
Фреймворк | Описание |
---|---|
CodeIgniter https://codeigniter.com/ |
Это одна из самых популярных платформ PHP MVC. Это легкий и короткий курс обучения. Он имеет богатый набор библиотек, которые помогают быстро создавать веб-сайты и приложения. Пользователи с ограниченным знанием программирования ООП также могут использовать его. Приложения с поддержкой CodeIgniter включают в себя; |
Кохана http://kohanaframework.org |
Это контроллер представления иерархической модели HMVC, безопасный и легкий каркас. Он имеет богатый набор компонентов для быстрой разработки приложений. Компании, которые используют Kohana, включают; |
CakePHP www.cakephp.org |
Он моделируется после Ruby на рельсах. Он известен такими понятиями, как шаблоны проектирования программного обеспечения, соглашение о конфигурации, ActiveRecord и т. Д. Приложения на основе CakePHP включают; |
www.framework.zend.com Zend |
Это мощная структура, которая является;
Он имеет API от таких производителей, как Amazon, Google, Flickr, Yahoo и т. Д. Он идеально подходит для разработки бизнес-приложений. Zend-приложения включают в себя;
Компании, использующие Zend Framework, включают:
|
Портирование приложения для опроса общественного мнения на CodeIgniter
В этом уроке мы создали приложение для опроса PHP. Здесь мы перенесем этот код на CodeIgniter
- Загрузите последнюю версию CodeIgniter с их сайта.
- Извлеките содержимое zip-файла в каталог разработки в каталоге веб-сервера. Мы будем использовать ciopinionpoll в качестве имени папки в этом уроке.
- Перейдите по URL-адресу http: // localhost / ciopinionpoll /
Теперь мы собираемся перенести наше приложение для опроса общественного мнения на CodeIgniter. Напомним, что наше приложение было разделено на три основных компонента, а именно;
- Фронт-контроллер — это та часть, которая отвечает на URL-запросы и возвращает запрошенную страницу. Этот код войдет в контроллер
- Модель — это код, который отвечает на запрошенные данные и возвращает запрошенные данные. Этот код войдет в модель
- Представления — это код, отвечающий за форматирование и отображение данных. Этот код войдет в представление
- Перейдите в папку ciopinionpoll
- Откройте файл database.php, расположенный в каталоге application / config.
- Найдите следующие строки кода
Настройки конфигурации базы данных
- Установите имя пользователя root
- Установите пароль для вашего локального пароля root
- Имя базы данных для мнения_полла. Обратите внимание, что мы будем использовать базу данных, созданную на предыдущем уроке.
- Сохраните изменения и закройте файл.
Создание нашей модели
Далее мы собираемся создать нашу модель, которая будет расширять CI_Model. CI_Model является частью библиотек CodeIgniter. Модель будет расположена в приложении / модели мнение_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
- «… Parent :: __construct ();» вызывает конструктор CI_Model
- «$ This-> load-> базы данных ();» загружает библиотеку базы данных, чтобы наше приложение могло взаимодействовать с базой данных
- «$ 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 (!fined (‘BASEPATH’)) exit (‘Прямой доступ к сценарию запрещен’);» гарантирует, что пользователи не имеют прямого доступа к классу контроллера
- «Добро пожаловать в класс расширяет CI_Controller…» наш контроллер расширяет класс CI_Controller
- «Public function __construct ()» вызывает метод конструктора класса CI_Controller и загружает нашу модель Opinion_poll_model
- «Public function index ()…» — это функция, которая отображается в index.php. он использует класс ввода CodeIgniter, чтобы проверить, было ли отправлено голосование, добавить его в базу данных и отобразить результаты. Если массив записей входного класса пуст, он загружает страницу голосования.
- «$ This-> input-> post (‘…’)» — это входной класс CodeIgniter, который захватывает содержимое глобальной переменной $ _POST.
- $ This->
Создание наших представлений
Вспомните из предыдущего примера, что у нас было две 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 /
Нажмите на кнопку ОК, вы увидите следующее предупреждение
Проголосуйте за своего любимого кандидата, затем нажмите OK. Вы увидите следующую страницу результатов.
Вывод
CodeIgniter — это простая в освоении и использовании среда PHP MVC, которая может значительно сократить время, затрачиваемое на разработку приложений.
Резюме
- Каркас — это набор библиотек, которые обеспечивают частичную реализацию общих задач.
- PHP имеет ряд зрелых и протестированных сред MVC с открытым исходным кодом.
- Хороший подход к разработке отделяет данные от представления и поощряет использование единой точки входа в приложение.
- Традиционные приложения PHP, которые следуют передовым методам проектирования приложений, могут быть перенесены в инфраструктуры MVC с минимальными изменениями.