Handledning för PHP MVC Framework: CodeIgniter Exempel
Vad är PHP MVC-ramverket?
PHP MVC är ett applikationsdesignmönster som skiljer applikationsdata och affärslogik (modell) från presentationen (vyn). MVC står för Model, View & Controller.
Styrenheten förmedlar mellan modellerna och vyerna.
Tänk på MVC-designmönstret som en bil och förare.
Bilen har vindrutor (vy) som föraren (kontrollern) använder för att övervaka trafiken framför sig sedan hastighet eller broms (modell) beroende på vad han ser framför sig.
Varför använda PHP MVC Framework?
- PHP MVC Frameworks förenklar arbetet med komplexa teknologier genom att;
- Döljer alla komplexa implementeringsdetaljer
- Tillhandahåller standardmetoder som vi kan använda för att bygga våra applikationer.
- Ökad utvecklarproduktivitet, detta beror på att basimplementeringen av aktiviteter som att ansluta till databasen, rensa användarinmatning etc. redan är delvis implementerad.
- Efterlevnad av professionella kodningsstandarder
PHP MVC-designmönster
Låt oss nu kort diskutera varje komponent i MVC-designmönstret.
Modell – denna del handlar om affärslogiken och applikationsdata. Den kan användas för att utföra datavalidering, bearbeta data och lagra den. Uppgifterna kan komma från;
- platt fil
- databas
- XML-dokument
- Andra giltiga datakällor.
Regulator – det här är den del som handlar om användarnas önskemål om resurser från servern.
Som ett exempel, när användarna begär webbadressen …/index.php?products=list, kommer styrenheten att ladda produktmodellen för att hämta produktdata och sedan mata ut resultaten i listvyn.
I ett nötskal länkar styrenheten ihop modellerna och vyerna beroende på de begärda resurserna.
Visningar – denna del handlar om att presentera data för användaren. Detta är vanligtvis i form av HTML-sidor.
Typer av PHP MVC-ramverk
Att välja det bästa PHP-ramverket är en utmaning.
Du behöver inte skriva ditt eget ramverk för att dra nytta av fördelarna med MVC.
Du bör bara försöka skapa din egen MVC-relaterade applikationsdesign för att förstå hur MVC-ramverk fungerar.
När du väl är bekväm med hur MVC-ramverk fungerar, bör du gå vidare till de mogna och redan testade ramverken.
Tabellen nedan beskriver kortfattat några av de populära php-ramverken och funktionerna som varje ramverk erbjuder.
Ramverk | Description |
---|---|
|
Det är ett av de mest populära PHP MVC-ramverken. Den är lätt och har en kort inlärningskurva. Den har en rik uppsättning bibliotek som hjälper till att bygga webbplatser och applikationer snabbt. Användare med begränsad kunskap om OOP-programmering kan också använda den. CodeIgniter-drivna applikationer inkluderar; |
|
Det är en Hierarchical Model View Controller HMVC säker och lätt ram. Den har en rik uppsättning komponenter för att snabbt utveckla applikationer. Företag som använder Kohana inkluderar; |
|
Den är modellerad efter Ruby on rails. Det är känt för koncept som mjukvarudesignmönster, konvention över konfiguration, ActiveRecord etc. CakePHP drivna applikationer inkluderar; |
|
Det är ett kraftfullt ramverk som är;
Den har API:er från leverantörer som AmazonGoogle, Flickr, Yahoo etc. Det är idealiskt för att utveckla affärsapplikationer. Zend-drivna applikationer inkluderar;
Företag som använder Zend-ramverket inkluderar;
|
Porterar opinionsundersökningsapplikationen till CodeIgniter
I detta handledning, skapade vi en PHP-undersökningsapplikation. Här kommer vi att porta den koden till CodeIgniter
- Download den senaste versionen av CodeIgniter från deras webbsajt.
- Extrahera innehållet i den zippade filen till din utvecklingskatalog i din webbserverkatalog. Vi kommer att använda ciopinionpoll som mappnamn i den här lektionen.
- Bläddra till URL:en http://localhost/ciopinionpoll/
Vi kommer nu att överföra vår opinionsundersökningsapplikation till CodeIgniter. Kom ihåg att vår ansökan var uppdelad i tre huvudkomponenter, nämligen;
- Frontkontroller – detta är den del som svarar på URL-förfrågningar och returnerar den begärda sidan. Denna kod kommer att gå in i styrenheten
- Modell – detta är koden som svarar på begärd data och returnerar den begärda data. Denna kod kommer att gå in i modellen
-
Visningar – detta är koden som ansvarar för formatering och visning av data. Den här koden kommer in i vyn
- Bläddra till ciopinionpoll-mappen
- Öppna database.php fil som finns i program/config-katalogen.
- Leta reda på följande kodrader
Databaskonfigurationsinställningar
- Ställ in användarnamnet på root
- Ställ in lösenordet till ditt root-lösenord för localhost
- Databasnamn till opinion_poll. Observera att vi kommer att använda databasen som skapades i föregående lektion.
- Spara ändringarna och stäng filen.
Skapar vår modell
Därefter ska vi skapa vår modell som kommer att utöka CI_Model. CI_Model är en del av CodeIgniter-biblioteken. Modellen kommer att finnas i applikation/modeller 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); } } ?>
HÄR,
- "class Opinion_poll_model utökar CI_Model..." är vår modell som utökar CI_Model
- "...förälder:: __construct();" anropar CI_Model-konstruktorn
- "$this->load->databas();" laddar databasbiblioteket så att vår applikation kan interagera med databasen
- “$this->db->” är CodeIgniters aktiva post. Kolla detta länk för mer information om den aktiva posten.
Skapa vår kontrollenhet Låt oss nu skapa kontrollenheten. Vi kommer att använda standardkontrollen CodeIgniter som finns i application/controllers/welcome.php. Ersätt dess källkoder med följande kod.
<?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 */ ?>
HÄR,
- "if (!defined('BASEPATH')) exit('Ingen direkt skriptåtkomst tillåten');" säkerställer att användare inte direkt kommer åt kontrollklassen
- "class Welcome utökar CI_Controller..." vår styrenhet utökar CI_Controller-klassen
- "public function __construct()" anropar CI_Controllers klasskonstruktörsmetod och laddar vår Opinion_poll_model modell
- "public function index()..." är funktionen som mappas till index.php. den använder CodeIgniters ingångsklass för att kontrollera om en röst har skickats, lägg till den i databasen och visa sedan resultaten. Om postarrayen för ingångsklassen är tom, laddar den röstningssidan.
- "$this->input->post('...')" är ingångsklassen CodeIgniter som tar tag i innehållet i den globala variabeln $_POST.
- "$this->opinion_poll_model->add_vote($this->input->post('vote'))" anropar modellens add_vote-metod för att lägga till rösten i databasen.
Skapa våra åsikter
Minns från föregående exempel att vi hade två HTML-sidor, en för röstning och den andra för resultat. Vi kommer att använda samma HTML-kod med minimala ändringar för att skapa våra åsikter. Skapa följande filer i program-/vykatalogen
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>
Låt oss nu skapa resultatsidan 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>
Testar vår applikation
Förutsatt att rotkatalogen för din applikation är ciopinion, bläddra till http://localhost/ciopionpoll/
Klicka på OK-knappen, du kommer att se följande varningsmeddelande
Rösta på din favoritkandidat och klicka sedan på OK Du kommer att se följande resultatsida
Slutsats
CodeIgniter är ett lätt att lära sig och använda PHP MVC-ramverk som avsevärt kan minska tiden som ägnas åt att utveckla applikationer.
CodeIgniter är ett lätt att lära sig och använda PHP MVC-ramverk som avsevärt kan minska tiden som ägnas åt att utveckla applikationer.
Sammanfattning
- Ett ramverk är en uppsättning bibliotek som tillhandahåller partiell implementering av vanliga uppgifter.
- PHP har ett antal mogna och testade MVC-ramverk med öppen källkod.
- En bra utvecklingsmetod skiljer data från presentationen och uppmuntrar användningen av en enda ingångspunkt i en applikation.
- Traditionella PHP-applikationer som följer applikationsdesignens bästa praxis kan portas till MVC-ramverk med minimala ändringar.