PHP MVC Framework oktatóanyag: CodeIgniter példa

Mi az a PHP MVC keretrendszer?

A PHP MVC egy alkalmazástervezési minta, amely elválasztja az alkalmazás adatait és az üzleti logikát (modellt) a prezentációtól (nézettől). Az MVC a Model, View & Controller rövidítése.

A vezérlő közvetít a modellek és nézetek között.

Gondoljon az MVC tervezési mintájára autóként és vezetőként.

Az autó szélvédőkkel (nézet) rendelkezik, amelyek segítségével a vezető (vezérlő) figyeli az előtte haladó forgalmat, majd a sebességet vagy a fékezést (modell) attól függően, hogy mit lát előre.

Miért érdemes PHP MVC Framework-et használni?

  • A PHP MVC Frameworks leegyszerűsíti az összetett technológiákkal való munkát azáltal, hogy;
    • Az összes bonyolult megvalósítási részlet elrejtése
    • Szabványos módszerek biztosítása, amelyeket alkalmazásaink elkészítéséhez használhatunk.
    • Megnövekedett fejlesztői termelékenység, mivel az olyan tevékenységek alapkivitelezése, mint az adatbázishoz való csatlakozás, a felhasználói bemenetek megtisztítása stb., részben már megvalósult.
    • A professzionális kódolási szabványok betartása

PHP MVC tervezési minta

Most röviden tárgyaljuk az MVC tervezési minta egyes összetevőit.

Modell – ez a rész az üzleti logikával és az alkalmazási adatokkal foglalkozik. Használható adatellenőrzések elvégzésére, adatok feldolgozására és tárolására. Az adatok származhatnak;

  • lapos reszelő
  • adatbázis
  • XML dokumentum
  • Egyéb érvényes adatforrások.

ellenőr – ez a rész a felhasználók szervertől érkező erőforráskéréseivel foglalkozik.

Például, amikor a felhasználók az URL-t kérik …/index.php?products=list, a vezérlő betölti a termékmodellt a termékadatok lekéréséhez, majd az eredményeket a lista nézetben adja ki.

Dióhéjban, a vezérlő összekapcsolja a modelleket és a nézeteket a kért erőforrásoktól függően.

Nézetek – ez a rész az adatok felhasználónak történő bemutatásával foglalkozik. Ez általában HTML-oldalak formájában történik.

A PHP MVC keretrendszer típusai

A legjobb PHP keretrendszer kiválasztása kihívást jelent.

Nem kell saját keretrendszert írnia ahhoz, hogy kihasználja az MVC előnyeit.

Csak az MVC-keretrendszerek működésének megértése érdekében próbálkozzon saját, MVC-vel kapcsolatos alkalmazásterv létrehozásával.

Ha elégedett az MVC-keretrendszerek működésével, lépjen tovább a kiforrott és már tesztelt keretrendszerekre.

Az alábbi táblázat röviden leír néhány népszerű php keretrendszert és az egyes keretrendszerek által kínált szolgáltatásokat.

Keretrendszer Description

CodeIgniter


CodeIgniter


https://codeigniter.com/

Ez az egyik legnépszerűbb PHP MVC keretrendszer. Könnyű és rövid tanulási görbéje van. Könyvtárak gazdag készletével rendelkezik, amelyek segítenek webhelyek és alkalmazások gyors létrehozásában. Az OOP programozásban korlátozott ismeretekkel rendelkező felhasználók is használhatják. CodeIgniter meghajtású alkalmazások közé tartozik;


kohana


kohana


http://kohanaframework.org

Ez egy hierarchikus Model View Controller HMVC biztonságos és könnyű keretrendszer. Gazdag komponenskészlettel rendelkezik az alkalmazások gyors fejlesztéséhez. A Kohana-t használó cégek közé tartozik;


CakePHP


CakePHP


www.cakephp.org

A Ruby on rails mintájára készült. Olyan fogalmakról ismert, mint a szoftvertervezési minták, a konfiguráció feletti konvenció, az ActiveRecord stb. CakePHP powered alkalmazások közé tartozik;


Zend

www.framework.zend.com


Zend

Ez egy erőteljes keret;

  • Biztonságos, megbízható, gyors és méretezhető
  • Támogatja a Web 2.0-t és webszolgáltatások létrehozását.

Olyan gyártóktól származó API-kat tartalmaz, mint AmazonA Google, Flickr, Yahoo stb. Ideális üzleti alkalmazások fejlesztéséhez. A Zend alapú alkalmazások közé tartozik;

  • Pimcore CMS,
  • DotKernel.

A Zend keretrendszert használó vállalatok közé tartozik;

  • BBC
  • Cisco
  • Webex
  • Offers.com

A közvélemény-kutatási alkalmazás áthelyezése a CodeIgniterbe

Ebben oktatói, létrehoztunk egy PHP szavazóalkalmazást. Itt áthelyezzük a kódot a CodeIgniterre

  • Letöltés a CodeIgniter legújabb verziója tőlük weboldal.
  • Csomagolja ki a tömörített fájl tartalmát a fejlesztési könyvtárba a webszerver könyvtárában. Ebben a leckében mappanévként a ciopinionpoll-t fogjuk használni.
  • Keresse meg az URL-t http://localhost/ciopinionpoll/

A közvélemény-kutatási alkalmazás áthelyezése a CodeIgniterbe

A közvélemény-kutatási alkalmazásunkat most áthelyezzük a CodeIgniterre. Emlékezzünk vissza, hogy az alkalmazásunk három fő összetevőre oszlik, nevezetesen a;

  • Elülső vezérlő – ez az a rész, amely válaszol az URL-kérésekre, és visszaadja a kért oldalt. Ez a kód bekerül a vezérlőbe
  • Modell – ez az a kód, amely válaszol a kért adatokra, és visszaadja a kért adatokat. Ez a kód bekerül a modellbe
  • Nézetek – ez az adatok formázásáért és megjelenítéséért felelős kód. Ez a kód megjelenik a nézetben

    • Böngésszen a ciopinionpoll mappához
    • Nyissa meg a adatbázis.php az Application/config könyvtárban található fájl.
    • Keresse meg a következő kódsorokat

Adatbázis konfigurációs beállítások

Adatbázis konfigurációs beállítások

  • Állítsa be a felhasználónevet root-ra
  • Állítsa be a jelszót a localhost root jelszavára
  • Adatbázis neve vélemény_szavazásnak. Megjegyzés: az előző leckében létrehozott adatbázist fogjuk használni.
  • Mentse el a változtatásokat, és zárja be a fájlt.

Modellünk elkészítése

Ezután létrehozzuk a modellünket, amely kiterjeszti a CI_Modelt. A CI_Model a CodeIgniter könyvtárak része. A modell az alkalmazásban/modellekben található vélemény_szavazás_modell.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); 
        } 
   } 
?>

ITT,

  • A „class Opinion_poll_model kiterjeszti a CI_Modelt…” a mi modellünk, amely kiterjeszti a CI_Modelt
  • "...szülő:: __construct();" meghívja a CI_Model konstruktort
  • "$this->load->database();" betölti az adatbázis-könyvtárat, hogy az alkalmazásunk együttműködhessen az adatbázissal
  • A „$this->db->” a CodeIgniter aktív rekordja. Nézd meg link további információkért az aktív rekordról.

Vezérlőnk létrehozása Most hozzuk létre a vezérlőt. Az alapértelmezett CodeIgniter vezérlőt fogjuk használni, amely az application/controllers/welcome.php fájlban található. Cserélje ki a forráskódjait a következő kóddal.

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

ITT,

  • "if (!defined('BASEPATH')) exit('Nem engedélyezett közvetlen szkript hozzáférés');" biztosítja, hogy a felhasználók ne férhessenek hozzá közvetlenül a vezérlőosztályhoz
  • „Class Welcome kiterjeszti a CI_Controllert…” vezérlőnk kiterjeszti a CI_Controller osztályt
  • A "public function __construct()" meghívja a CI_Controller osztály konstruktor metódusát, és betölti a vélemény_poll_model modellünket
  • A „public function index()…” az index.php-re leképező függvény. a CodeIgniter bemeneti osztályával ellenőrzi, hogy leadták-e a szavazatot, hozzáadja az adatbázishoz, majd megjeleníti az eredményeket. Ha a bemeneti osztály hozzászólástömbje üres, akkor betölti a szavazóoldalt.
  • A „$this->input->post('…')” a CodeIgniter bemeneti osztálya, amely megragadja a $_POST globális változó tartalmát.
  • A „$this->opinion_poll_model->add_vote($this->input->post('vote'))” meghívja a modell add_vote metódusát, hogy hozzáadja a szavazatot az adatbázishoz.

Nézeteink kialakítása

Emlékezzünk vissza az előző példából, hogy két HTML oldalunk volt, az egyik a szavazáshoz, a másik pedig az eredményekhez. Ugyanazt a HTML-kódot használjuk minimális módosításokkal a nézeteink létrehozásához. Hozza létre a következő fájlokat az Application/Views könyvtárban

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>

Most hozzuk létre a results.php eredményoldalt

<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>

Alkalmazásunk tesztelése

Feltételezve, hogy az alkalmazás gyökérkönyvtára a ciopinion, tallózzon ide http://localhost/ciopionpoll/

PHP MVC keretrendszer tesztelése

Kattintson az OK gombra, és a következő figyelmeztető üzenet jelenik meg

PHP MVC keretrendszer tesztelése

Szavazz a kedvenc jelöltedre, majd kattints az OK gombra. A következő eredményoldal jelenik meg

PHP MVC keretrendszer tesztelése

Következtetés

A CodeIgniter egy könnyen megtanulható és használható PHP MVC keretrendszer, amely nagymértékben csökkentheti az alkalmazások fejlesztésére fordított időt.
A CodeIgniter egy könnyen megtanulható és használható PHP MVC keretrendszer, amely nagymértékben csökkentheti az alkalmazások fejlesztésére fordított időt.

Összegzésként

  • A keretrendszer olyan könyvtárak halmaza, amelyek a közös feladatok részleges végrehajtását biztosítják.
  • A PHP számos nyílt forráskódú, kiforrott és tesztelt MVC keretrendszerrel rendelkezik.
  • A jó fejlesztési megközelítés elválasztja az adatokat a prezentációtól, és ösztönzi az egyetlen belépési pont alkalmazását.
  • A hagyományos PHP-alkalmazások, amelyek követik az alkalmazástervezés bevált gyakorlatait, minimális módosításokkal portolhatók MVC-keretrendszerekre.