PHP MVC Framework Tutorial: CodeIgniter Eksempel

Indholdsfortegnelse:

Anonim

Hvad er PHP MVC framework?

PHP MVC er et applikationsdesignmønster, der adskiller applikationsdata og forretningslogik (model) fra præsentationen (visning). MVC står for Model, View & Controller.

Controlleren formidler mellem modellerne og visningerne.

Tænk på MVC-designmønsteret som en bil og føreren.

Bilen har de forruder (visning), som føreren (controller) bruger til at overvåge trafikken fremad, derefter hastighed eller bremse (model) afhængigt af hvad han ser fremad.

Hvorfor bruge PHP MVC Framework?

  • PHP MVC Frameworks forenkler arbejdet med komplekse teknologier ved at;
    • Skjuler alle de komplekse implementeringsdetaljer
    • Tilbyder standardmetoder, som vi kan bruge til at opbygge vores applikationer.
    • Øget udviklerproduktivitet, dette skyldes, at basisimplementeringen af ​​aktiviteter såsom at oprette forbindelse til databasen, desinficere brugerinput osv. Allerede er delvist implementeret.
    • Overholdelse af professionelle kodningsstandarder

I denne vejledning lærer du-

  • PHP MVC designmønster
  • Typer af PHP MVC-rammer
  • Portering af meningsmålingens ansøgning til CodeIgniter
  • Databasekonfigurationsindstillinger
  • Oprettelse af vores model
  • Oprettelse af vores synspunkter
  • Test af vores ansøgning

PHP MVC designmønster

Lad os nu kort diskutere hver komponent i MVC-designmønsteret.

Model - denne del vedrører forretningslogikken og applikationsdataene. Det kan bruges til at udføre datavalideringer, behandle data og gemme dem. Dataene kan komme fra;

  • flad fil
  • database
  • XML-dokument
  • Andre gyldige datakilder.

Controller - dette er den del, der behandler brugernes anmodninger om ressourcer fra serveren.

Når brugerne f.eks. Anmoder om URL ... /index.php?products=list, indlæser controlleren produktmodellen for at hente produktdataene og derefter output resultaterne i listevisningen.

Kort sagt forbinder controlleren modellerne og visningerne sammen afhængigt af de krævede ressourcer.

Visninger - denne del handler om at præsentere dataene for brugeren. Dette er normalt i form af HTML-sider.

Typer af PHP MVC-rammer

At vælge den bedste PHP-ramme er en udfordring.

Du behøver ikke at skrive dine egne rammer for at drage fordel af fordelene ved MVC.

Du bør kun forsøge at oprette dit eget MVC-relaterede applikationsdesign for at forstå, hvordan MVC-rammer fungerer.

Når du er fortrolig med den måde, MVC-rammer fungerer på, skal du gå videre til de modne og allerede testede rammer.

Tabellen nedenfor beskriver kort nogle af de populære php-rammer og de funktioner, som hver ramme tilbyder.

Ramme Beskrivelse
CodeIgniter https://codeigniter.com/ Det er en af ​​de mest populære PHP MVC-rammer. Det er let og har en kort indlæringskurve. Det har et rigt sæt biblioteker, der hjælper med at opbygge websteder og applikationer hurtigt. Brugere med begrænset viden om OOP-programmering kan også bruge det. CodeIgniter-drevne applikationer inkluderer;
  • https://www.pyrocms.com/
  • http://www.shopigniter.com/
Kohana http://kohanaframework.org Det er en hierarkisk Model View Controller HMVC sikker og let ramme. Det har et rigt sæt komponenter til hurtig udvikling af applikationer. Virksomheder, der bruger Kohana, inkluderer;
  • https://go.wepay.com/
  • https://kids.nationalgeographic.com/
  • https://www.sittercity.com/
CakePHP www.cakephp.org Det er modelleret efter Ruby på skinner. Det er kendt for begreber som softwaredesignmønstre, konvention over konfiguration, ActiveRecord osv. CakePHP-drevne applikationer inkluderer;
  • http://invoicemachine.com/
  • http://www.fmylife.com/
www.framework.zend.com Zend Det er en stærk ramme, der er;
  • Sikker, pålidelig, hurtig og skalerbar
  • Understøtter Web 2.0 og oprettelse af webtjenester.
Det har API'er fra leverandører som Amazon, Google, Flickr, Yahoo osv. Det er ideelt til udvikling af forretningsapplikationer. Zend-drevne applikationer inkluderer;
  • Pimcore CMS,
  • DotKernel.
Virksomheder, der bruger Zend-rammen, inkluderer;
  • BBC
  • Cisco
  • Webex
  • Offers.com

Portering af meningsmålingens ansøgning til CodeIgniter

I denne vejledning oprettede vi en PHP-afstemningsprogram. Her porterer vi den kode til CodeIgniter

  • Download den nyeste version af CodeIgniter fra deres websted.
  • Uddrag indholdet af den zip-fil til din udviklingsmappe i dit webserver-bibliotek. Vi bruger ciopinionpoll som mappenavn i denne lektion.
  • Gå til URL'en http: // localhost / ciopinionpoll /

Vi sender nu vores ansøgning til meningsmåling til CodeIgniter. Husk, at vores ansøgning var opdelt i tre hovedkomponenter, nemlig;

  • Frontcontroller - dette er den del, der reagerer på URL-anmodninger og returnerer den anmodede side. Denne kode går ind i controlleren
  • Model - dette er koden, der reagerer på anmodede data og returnerer de ønskede data. Denne kode går ind i modellen
  • Visninger - dette er den kode, der er ansvarlig for formatering og visning af dataene. Denne kode går i visningen
    • Gennemse mappen ciopinionpoll
    • Åbn filen database.php, der findes i applikations- / konfigurationsmappen.
    • Find de følgende linjer med kode

Databasekonfigurationsindstillinger

  • Indstil brugernavnet til root
  • Indstil adgangskoden til din localhost-rodadgangskode
  • Database navn til opinion_poll. Bemærk, at vi bruger databasen oprettet i den foregående lektion.
  • Gem ændringerne, og luk filen.

Oprettelse af vores model

Dernæst skal vi oprette vores model, der udvider CI_Model. CI_Model er en del af CodeIgniter-bibliotekerne. Modellen findes i applikationen / modeller opinion_poll_model.php

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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}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);}}?>

HER,

  • “Klasse Opinion_poll_model udvider CI_Model ...” er vores model, der udvider CI_Model
  • “... forælder :: __construct ();” kalder CI_Model-konstruktøren
  • “$ Dette-> indlæs-> database ();” indlæser databasebiblioteket, så vores applikation kan interagere med databasen
  • “$ This-> db->” er CodeIgniters aktive registrering. Tjek dette link for at få flere oplysninger om den aktive post.

Oprettelse af vores controller Lad os nu oprette controlleren. Vi bruger standard CodeIgniter-controlleren, der findes i applikationen / controllere / welcome.php. Udskift kildekoder med følgende kode.

load->model('opinion_poll_model');}public function index() {if ($this->input->post('submitbutton') && !$this->input->post('vote')) {echo "";}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 */?>

HER,

  • “Hvis (! Defineret ('BASEPATH')) exit ('Ingen direkte adgang til script tilladt');" sikrer, at brugerne ikke direkte har adgang til controller-klassen
  • “Klasse Velkomst udvider CI_Controller…” vores controller udvider CI_Controller klassen
  • “Offentlig funktion __construct ()” kalder CI_Controllers klassekonstruktormetode og indlæser vores Opinion_poll_model-model
  • “Public function index ()…” er den funktion, der kortlægges til index.php. den bruger CodeIgniters inputklasse til at kontrollere, om der er afgivet en afstemning, føje den til databasen og derefter vise resultaterne. Hvis postklassen i inputklassen er tom, indlæses den afstemningssiden.
  • “$ This-> input-> post ('…')” er CodeIgniter-inputklassen, der griber indholdet af den globale variabel $ _POST.
  • “$ This-> opinion_poll_model-> add_vote ($ this-> input-> post ('vote'))" kalder modelens add_vote-metode for at tilføje afstemningen i databasen.

Oprettelse af vores synspunkter

Husk fra det foregående eksempel, at vi havde to HTML-sider, en til afstemning og en til resultater. Vi bruger den samme HTML-kode med minimale ændringer for at skabe vores synspunkter. Opret følgende filer i applikations- / visningsmappen

opinion_poll_form.phpJavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript Library?

JQuery
MooTools
YUI Library
Glow

Lad os nu oprette resultatsiden results.php

JavaScript Libraries - Opinion Poll Results

JavaScript Libraries - Opinion Poll Results

What is your favorite JavaScript Library?

people have thus far taken part in this poll:

Return to voting page

Test af vores ansøgning

Forudsat at rodmappen til din applikation er ciopinion, skal du gå til http: // localhost / ciopionpoll /

Klik på OK-knappen, du vil se følgende advarselsmeddelelse

Stem på din foretrukne kandidat, og klik derefter på OK. Du får vist følgende resultatside

Konklusion

CodeIgniter er en nem at lære og bruge PHP MVC-ramme, der i høj grad kan reducere den tid, der bruges på at udvikle applikationer.

Resumé

  • En ramme er et sæt biblioteker, der giver delvis implementering af fælles opgaver.
  • PHP har en række open source modne og testede MVC-rammer.
  • En god udviklingsmetode adskiller dataene fra præsentationen og tilskynder brugen af ​​et enkelt indgangspunkt i en applikation.
  • Traditionelle PHP-applikationer, der følger applikationsdesignets bedste praksis, kan overføres til MVC-rammer med minimale ændringer.