Посібник PHP MVC Framework: приклад CodeIgniter

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

PHP MVC — це шаблон розробки програми, який відокремлює дані програми та бізнес-логіку (модель) від презентації (перегляду). MVC означає Model, View & Controller.

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

Уявіть шаблон проектування 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 потужні програми включають;


Зенд

www.framework.zend.com


Зенд

Це потужна структура, яка є;

  • Безпечний, надійний, швидкий і масштабований
  • Підтримує Web 2.0 і створення веб-сервісів.

Він містить API від таких постачальників, як AmazonGoogle Flickr, Yahoo тощо. Він ідеально підходить для розробки бізнес-додатків. Програми на основі Zend включають;

  • Pimcore CMS,
  • DotKernel.

Компанії, які використовують фреймворк Zend, включають:

  • BBC
  • Cisco
  • Вебекс
  • Пропозиції.com

Перенесення програми опитування громадської думки на CodeIgniter

В цьому підручник, ми створили програму опитування PHP. Тут ми перенесемо цей код на CodeIgniter

  • Завантажити остання версія CodeIgniter від їх .
  • Розпакуйте вміст заархівованого файлу в каталог розробки в каталозі веб-сервера. У цьому уроці ми будемо використовувати ciopinionpoll як назву папки.
  • Перейдіть до URL-адреси http://localhost/ciopinionpoll/

Перенесення програми опитування громадської думки на CodeIgniter

Зараз ми збираємося перенести наш додаток для опитування громадської думки на CodeIgniter. Згадайте, що наша програма була розділена на три основні компоненти, а саме:

  • Передній контролер – це частина, яка відповідає на запити URL і повертає запитану сторінку. Цей код надходитиме в контролер
  • Модель – це код, який відповідає на запит даних і повертає запитувані дані. Цей код увійде в модель
  • Представлення – це код, який відповідає за форматування та відображення даних. Цей код потрапить у вікно перегляду

    • Перейдіть до папки ciopinionpoll
    • Відкрийте база даних.php файл, розташований у каталозі програми/конфігурації.
    • Знайдіть наступні рядки коду

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

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

  • Встановіть ім'я користувача root
  • Встановіть пароль користувача локального хосту
  • Назва бази даних для opinion_poll. Зверніть увагу, що ми будемо використовувати базу даних, створену на попередньому уроці.
  • Збережіть зміни та закрийте файл.

Створення нашої моделі

Далі ми збираємося створити нашу модель, яка розширить CI_Model. CI_Model є частиною бібліотек CodeIgniter. Модель буде розташовано в додатку/моделях 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); 
        } 
   } 
?>

ТУТ,

  • «class Opinion_poll_model extends CI_Model…» — це наша модель, яка розширює CI_Model
  • “…parent:: __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 (!defined('BASEPATH')) exit('Прямий доступ до сценарію не дозволено');” гарантує, що користувачі не отримують прямий доступ до класу контролера
  • “class Welcome extends CI_Controller…” наш контролер розширює клас CI_Controller
  • “public function __construct()” викликає метод конструктора класу CI_Controller і завантажує нашу модель Opinion_poll_model
  • “public function 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 framework

Натисніть кнопку OK, ви побачите наступне попередження

Тестування PHP MVC framework

Проголосуйте за улюбленого кандидата, а потім натисніть OK. Ви побачите наступну сторінку результатів

Тестування PHP MVC framework

Висновок

CodeIgniter — це проста у вивченні та використанні структура PHP MVC, яка може значно скоротити час, витрачений на розробку програм.
CodeIgniter — це проста у вивченні та використанні структура PHP MVC, яка може значно скоротити час, витрачений на розробку програм.

Підсумки

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

Щоденний інформаційний бюлетень Guru99

Розпочніть свій день з останніх та найважливіших новин про штучний інтелект, які ви можете знайти просто зараз.