Výukový program PHP MVC Framework: Příklad CodeIgniter

Co je PHP MVC framework?

PHP MVC je návrhový vzor aplikace, který odděluje data aplikace a obchodní logiku (model) od prezentace (zobrazení). MVC je zkratka pro Model, View & Controller.

Ovladač zprostředkovává mezi modely a pohledy.

Představte si designový vzor MVC jako auto a řidiče.

Vůz má čelní skla (pohled), pomocí kterých řidič (kontrolor) sleduje provoz před sebou a poté rychlost nebo brzdění (model) podle toho, co vidí před sebou.

Proč používat PHP MVC Framework?

  • PHP MVC Frameworks zjednodušují práci se složitými technologiemi tím, že;
    • Skrytí všech složitých implementačních detailů
    • Poskytování standardních metod, které můžeme použít k sestavení našich aplikací.
    • Zvýšená produktivita vývojářů, je to proto, že základní implementace činností, jako je připojení k databázi, sanitace uživatelského vstupu atd., jsou již částečně implementovány.
    • Dodržování profesionálních standardů kódování

Návrhový vzor PHP MVC

Pojďme si nyní krátce probrat každou komponentu návrhového vzoru MVC.

Model – tato část se zabývá obchodní logikou a daty aplikace. Lze jej použít k ověřování dat, zpracování dat a jejich ukládání. Data mohou pocházet z;

  • plochý pilník
  • databáze
  • XML dokument
  • Jiné platné zdroje dat.

kontrolor – tato část se zabývá požadavky uživatelů na zdroje ze serveru.

Například, když uživatelé požádají o adresu URL …/index.php?products=list, řídicí jednotka načte model produktů, aby načetla data produktů, a poté zobrazí výsledky v zobrazení seznamu.

Stručně řečeno, ovladač spojuje modely a pohledy dohromady v závislosti na požadovaných zdrojích.

Zobrazení – tato část se zabývá prezentováním dat uživateli. To je obvykle ve formě HTML stránek.

Typy PHP MVC frameworku

Výběr nejlepšího PHP frameworku je výzva.

Nemusíte psát svůj vlastní rámec, abyste mohli těžit z výhod MVC.

Měli byste se pouze pokusit vytvořit vlastní návrh aplikace související s MVC, abyste pochopili, jak fungují rámce MVC.

Jakmile se seznámíte s tím, jak fungují rámce MVC, měli byste přejít na vyzrálé a již testované rámce.

Níže uvedená tabulka stručně popisuje některé oblíbené php frameworky a funkce, které každý framework nabízí.

Rámec Description

CodeIgniter


CodeIgniter


https://codeigniter.com/

Je to jeden z nejpopulárnějších PHP MVC frameworků. Je lehký a má krátkou křivku učení. Má bohatou sadu knihoven, které pomáhají rychle vytvářet webové stránky a aplikace. Používat jej mohou i uživatelé s omezenými znalostmi OOP programování. Aplikace poháněné CodeIgniter zahrnují;


kohana


kohana


http://kohanaframework.org

Je to zabezpečený a lehký rámec Hierarchical Model View Controller HMVC. Má bohatou sadu komponent pro rychlý vývoj aplikací. Společnosti, které používají Kohana, zahrnují;


CakePHP


CakePHP


www.cakephp.org

Je po vzoru Ruby on rails. Je známý pro koncepty, jako jsou vzory návrhu softwaru, konvence nad konfigurací, ActiveRecord atd. CakePHP poháněné aplikace zahrnují;


Zend

www.framework.zend.com


Zend

Je to mocný rámec;

  • Bezpečné, spolehlivé, rychlé a škálovatelné
  • Podporuje Web 2.0 a tvorbu webových služeb.

Obsahuje API od dodavatelů jako Amazon, Google, Flickr, Yahoo atd. Je ideální pro vývoj obchodních aplikací. Zend poháněné aplikace zahrnují;

  • Pimcore CMS,
  • DotKernel.

Společnosti používající rámec Zend zahrnují;

  • BBC
  • Cisco
  • Webex
  • Offers.com

Portování aplikace pro průzkum veřejného mínění do CodeIgniter

V tomto konzultace, vytvořili jsme aplikaci pro průzkum PHP. Zde tento kód přeneseme do CodeIgniter

  • Ke stažení nejnovější verzi CodeIgniter od jejich webová stránka.
  • Extrahujte obsah zazipovaného souboru do vašeho vývojového adresáře v adresáři vašeho webového serveru. V této lekci použijeme jako název složky ciopinionpoll.
  • Přejděte na adresu URL http://localhost/ciopinionpoll/

Portování aplikace pro průzkum veřejného mínění do CodeIgniter

Nyní se chystáme přenést naši aplikaci pro průzkum veřejného mínění na CodeIgniter. Připomeňme, že naše aplikace byla rozdělena do tří hlavních složek, jmenovitě;

  • Front controller – jedná se o část, která odpovídá na URL požadavky a vrací požadovanou stránku. Tento kód půjde do ovladače
  • Model – jedná se o kód, který odpovídá na požadovaná data a vrací požadovaná data. Tento kód vstoupí do modelu
  • Pohledy – toto je kód zodpovědný za formátování a zobrazování dat. Tento kód přejde do zobrazení

    • Přejděte do složky ciopinionpoll
    • Otevřete databáze.php soubor umístěný v adresáři application/config.
    • Vyhledejte následující řádky kódu

Nastavení konfigurace databáze

Nastavení konfigurace databáze

  • Nastavte uživatelské jméno na root
  • Nastavte heslo na kořenové heslo místního hostitele
  • Název databáze do ankety. Všimněte si, že budeme používat databázi vytvořenou v předchozí lekci.
  • Uložte změny a zavřete soubor.

Vytváření našeho modelu

Dále vytvoříme náš model, který rozšíří CI_Model. CI_Model je součástí knihoven CodeIgniter. Model bude umístěn v aplikaci/modelech názor_model_modelu.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); 
        } 
   } 
?>

TADY,

  • „class Opinion_poll_model rozšiřuje CI_Model…“ je náš model, který rozšiřuje CI_Model
  • “…rodič:: __construct();” volá konstruktor CI_Model
  • “$this->load->database();” načte databázovou knihovnu, aby naše aplikace mohla s databází spolupracovat
  • “$this->db->” je aktivní záznam CodeIgniter. Koukni na tohle https://trials.autocruitment.com pro více informací o aktivním záznamu.

Vytvoření našeho ovladače Nyní vytvoříme ovladač. Použijeme výchozí ovladač CodeIgniter umístěný v application/controllers/welcome.php. Nahraďte jeho zdrojové kódy následujícím kódem.

<?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 */
?>

TADY,

  • “if (!defined('BASEPATH')) exit('Není povolen přímý přístup pomocí skriptu');“ zajišťuje, že uživatelé nemají přímý přístup ke třídě kontroléru
  • „class Welcome rozšiřuje CI_Controller…“ náš kontrolér rozšiřuje třídu CI_Controller
  • „veřejná funkce __construct()“ volá metodu konstruktoru třídy CI_Controller a načte náš model Opinion_poll_model
  • “public function index()…” je funkce, která se mapuje na index.php. používá vstupní třídu CodeIgniter ke kontrole, zda byl odevzdán hlas, přidá jej do databáze a zobrazí výsledky. Pokud je pole příspěvků vstupní třídy prázdné, načte se stránka hlasování.
  • “$this->input->post('…')” je vstupní třída CodeIgniter, která přebírá obsah globální proměnné $_POST.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” volá metodu add_vote modelu pro přidání hlasu do databáze.

Vytváření našich pohledů

Připomeňme si z předchozího příkladu, že jsme měli dvě stránky HTML, jednu pro hlasování a druhou pro výsledky. K vytvoření našich pohledů použijeme stejný HTML kód s minimálními úpravami. V adresáři application/views vytvořte následující soubory

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>

Nyní vytvoříme stránku výsledků 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>

Testování naší aplikace

Za předpokladu, že kořenový adresář vaší aplikace je ciopinion, přejděte do http://localhost/ciopionpoll/

Testování rámce PHP MVC

Klikněte na tlačítko OK, zobrazí se následující výstražná zpráva

Testování rámce PHP MVC

Hlasujte pro svého oblíbeného kandidáta a poté klikněte na OK. Zobrazí se následující stránka s výsledky

Testování rámce PHP MVC

Proč investovat do čističky vzduchu?

CodeIgniter je snadno naučitelný a použitelný PHP MVC framework, který může výrazně zkrátit čas strávený vývojem aplikací.
CodeIgniter je snadno naučitelný a použitelný PHP MVC framework, který může výrazně zkrátit čas strávený vývojem aplikací.

Shrnutí

  • Framework je soubor knihoven, které zajišťují částečnou implementaci běžných úkolů.
  • PHP má řadu vyspělých a testovaných rámců MVC s otevřeným zdrojovým kódem.
  • Dobrý vývojový přístup odděluje data od prezentace a podporuje použití jediného vstupního bodu do aplikace.
  • Tradiční PHP aplikace, které dodržují osvědčené postupy návrhu aplikací, lze s minimálními úpravami přenést do rámců MVC.