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 |
---|---|
|
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; |
|
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; |
|
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; |
|
Ez egy erőteljes keret;
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;
A Zend keretrendszert használó vállalatok közé tartozik;
|
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á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
- Á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/
Kattintson az OK gombra, és a következő figyelmeztető üzenet jelenik meg
Szavazz a kedvenc jelöltedre, majd kattints az OK gombra. A következő eredményoldal jelenik meg
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.