Учебники

23) PHP MVC Framework

Что такое PHP MVC Framework?

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

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

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

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

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

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

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

PHP MVC Design Pattern

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

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

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

Контроллер — эта часть занимается запросами пользователей на ресурсы с сервера.

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

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

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

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

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

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

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

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

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

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

Изучите PHP MVC фреймворки с примером CodeIgniter
Кохана http://kohanaframework.org
Это контроллер представления иерархической модели HMVC, безопасный и легкий каркас. Он имеет богатый набор компонентов для быстрой разработки приложений. Компании, которые используют Kohana, включают;

 Изучите PHP MVC фреймворки с примером CodeIgniter
CakePHP www.cakephp.org
Он моделируется после Ruby на рельсах. Он известен такими понятиями, как шаблоны проектирования программного обеспечения, соглашение о конфигурации, ActiveRecord и т. Д. Приложения на основе CakePHP включают;

Изучите PHP MVC фреймворки с примером CodeIgniter
www.framework.zend.com
Zend
Это мощная структура, которая является;

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

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

  • Pimcore CMS,
  • DotKernel.

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

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

 

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

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

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

Изучите PHP MVC фреймворки с примером CodeIgniter

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

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

Настройки конфигурации базы данных

Изучите PHP MVC фреймворки с примером CodeIgniter

  • Установите имя пользователя 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); 
        } 
   } 
?>

  ВОТ,

Создание нашего контроллера Теперь давайте создадим контроллер. Мы будем использовать контроллер 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 /

Изучите PHP MVC фреймворки с примером CodeIgniter

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

Изучите PHP MVC фреймворки с примером CodeIgniter

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

Изучите PHP MVC фреймворки с примером CodeIgniter

Вывод

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

Резюме

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