Учебное пособие по 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 и функции, которые предлагает каждый фреймворк.

Рамки Описание

CodeIgniter


CodeIgniter


https://codeigniter.com/

Это один из самых популярных фреймворков PHP MVC. Он легкий и требует короткого обучения. Он имеет богатый набор библиотек, которые помогают быстро создавать веб-сайты и приложения. Его также могут использовать пользователи с ограниченными знаниями в области ООП-программирования. Приложения на базе CodeIgniter включают в себя;


Кохана


Кохана


http://kohanaframework.org

Это безопасная и легкая структура HMVC иерархического модельного контроллера представления. Он имеет богатый набор компонентов для быстрой разработки приложений. Компании, которые используют Kohana, включают;


CakePHP


CakePHP


www.cakephp.org

Он создан по образцу Ruby on Rails. Он известен такими концепциями, как шаблоны проектирования программного обеспечения, соглашение о конфигурации, ActiveRecord и т. д. CakePHP работающие приложения включают в себя;


Zend

www.framework.zend.com


Zend

Это мощная структура;

  • Безопасный, надежный, быстрый и масштабируемый
  • Поддерживает Web 2.0 и создание веб-сервисов.

Он включает API от таких поставщиков, как Amazon, Google, Flickr, Yahoo и т. д. Идеально подходит для разработки бизнес-приложений. Приложения на базе Zend включают в себя;

  • Пимкор CMS,
  • ДотКернел.

Компании, использующие структуру Zend, включают:

  • BBC
  • Cisco
  • Вебекс
  • Offers.com

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

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

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

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

Сейчас мы собираемся перенести наше приложение для опроса общественного мнения на 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/

Тестирование фреймворка PHP MVC

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

Тестирование фреймворка PHP MVC

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

Тестирование фреймворка PHP MVC

Заключение

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

Резюме

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