PHP MVC Framework-zelfstudie: CodeIgniter-voorbeeld

Inhoudsopgave:

Anonim

Wat is een PHP MVC-framework?

PHP MVC is een applicatieontwerppatroon dat de applicatiegegevens en bedrijfslogica (model) scheidt van de presentatie (weergave). MVC staat voor Model, View & Controller.

De controller bemiddelt tussen de modellen en weergaven.

Beschouw het MVC-ontwerppatroon als een auto en de bestuurder.

De auto heeft de voorruiten (zicht) die de bestuurder (controller) gebruikt om het verkeer voor zich te volgen en vervolgens de snelheid of rem (model), afhankelijk van wat hij voor zich ziet.

Waarom PHP MVC Framework gebruiken?

  • PHP MVC Frameworks vereenvoudigen het werken met complexe technologieën door;
    • Alle complexe implementatiedetails verbergen
    • Het bieden van standaardmethoden die we kunnen gebruiken om onze applicaties te bouwen.
    • Verhoogde productiviteit van ontwikkelaars, dit komt doordat de basisimplementatie van activiteiten zoals verbinding maken met de database, opschonen van gebruikersinvoer etc. al gedeeltelijk is geïmplementeerd.
    • Naleving van professionele coderingsnormen

In deze tutorial leer je-

  • PHP MVC-ontwerppatroon
  • Typen PHP MVC-framework
  • Porteren van de opiniepeiling-applicatie naar CodeIgniter
  • Database configuratie-instellingen
  • Ons model creëren
  • Onze opvattingen creëren
  • Onze applicatie testen

PHP MVC-ontwerppatroon

Laten we nu kort elk onderdeel van het MVC-ontwerppatroon bespreken.

Model - dit deel heeft betrekking op de bedrijfslogica en de toepassingsgegevens. Het kan worden gebruikt om gegevensvalidaties uit te voeren, gegevens te verwerken en op te slaan. De gegevens kunnen afkomstig zijn van;

  • plat bestand
  • database
  • XML-document
  • Andere geldige gegevensbronnen.

Controller - dit is het deel dat zich bezighoudt met de verzoeken van gebruikers om bronnen van de server.

Als de gebruiker bijvoorbeeld om de URL… /index.php?products=list vraagt, laadt de controller het productmodel om de productgegevens op te halen en voert de resultaten vervolgens uit in de lijstweergave.

In een notendop: de controller koppelt de modellen en weergaven aan elkaar, afhankelijk van de gevraagde bronnen.

Weergaven - dit deel behandelt het presenteren van de gegevens aan de gebruiker. Dit is meestal in de vorm van HTML-pagina's.

Typen PHP MVC-framework

Het selecteren van het beste PHP-framework is een uitdaging.

U hoeft niet uw eigen framework te schrijven om te profiteren van de voordelen van MVC.

U moet alleen proberen uw eigen MVC-gerelateerde applicatieontwerp te maken om te begrijpen hoe MVC-frameworks werken.

Als u eenmaal vertrouwd bent met de manier waarop MVC-frameworks werken, moet u doorgaan naar de volwassen en reeds geteste frameworks.

De onderstaande tabel beschrijft in het kort enkele van de populaire php-frameworks en de functies die elk framework biedt.

Kader Omschrijving
CodeIgniter https://codeigniter.com/ Het is een van de meest populaire PHP MVC-frameworks. Het is licht van gewicht en heeft een korte leercurve. Het heeft een rijke reeks bibliotheken die helpen bij het snel bouwen van websites en applicaties. Gebruikers met beperkte kennis van OOP-programmering kunnen er ook gebruik van maken. Door CodeIgniter aangedreven toepassingen omvatten;
  • https://www.pyrocms.com/
  • http://www.shopigniter.com/
Kohana http://kohanaframework.org Het is een hiërarchische Model View Controller HMVC veilig en lichtgewicht framework. Het heeft een rijke set aan componenten om snel applicaties te ontwikkelen. Bedrijven die Kohana gebruiken zijn onder meer;
  • https://go.wepay.com/
  • https://kids.nationalgeographic.com/
  • https://www.sittercity.com/
CakePHP www.cakephp.org Het is gemodelleerd naar Ruby op rails. Het staat bekend om concepten zoals softwareontwerppatronen, conventie over configuratie, ActiveRecord enz. CakePHP-aangedreven applicaties omvatten;
  • http://invoicemachine.com/
  • http://www.fmylife.com/
www.framework.zend.com Zend Het is namelijk een krachtig raamwerk;
  • Veilig, betrouwbaar, snel en schaalbaar
  • Ondersteunt Web 2.0 en het maken van webservices.
Het bevat API's van leveranciers als Amazon, Google, Flickr, Yahoo etc. Het is ideaal voor het ontwikkelen van zakelijke applicaties. Zend-aangedreven toepassingen omvatten;
  • Pimcore CMS,
  • DotKernel.
Bedrijven die het Zend-framework gebruiken, zijn onder meer;
  • BBC
  • Cisco
  • Webex
  • Offers.com

Porteren van de opiniepeiling-applicatie naar CodeIgniter

In deze tutorial hebben we een PHP-poll-applicatie gemaakt. Hier zullen we die code overzetten naar CodeIgniter

  • Download de nieuwste versie van CodeIgniter van hun website.
  • Pak de inhoud van het gezipte bestand uit naar uw ontwikkelingsmap in uw webservermap. We gebruiken ciopinionpoll als mapnaam in deze les.
  • Blader naar de URL http: // localhost / ciopinionpoll /

We gaan nu onze opiniepeilingtoepassing overzetten naar CodeIgniter. Bedenk dat onze applicatie was onderverdeeld in drie hoofdcomponenten, namelijk de;

  • Front controller - dit is het deel dat reageert op URL-verzoeken en de gevraagde pagina retourneert. Deze code gaat naar de controller
  • Model - dit is de code die reageert op de gevraagde gegevens en de gevraagde gegevens retourneert. Deze code wordt in het model opgenomen
  • Weergaven - dit is de code die verantwoordelijk is voor het opmaken en weergeven van de gegevens. Deze code komt in de weergave
    • Blader naar de map ciopinionpoll
    • Open het bestand database.php in de directory application / config.
    • Zoek de volgende regels code

Database configuratie-instellingen

  • Stel de gebruikersnaam in op root
  • Stel het wachtwoord in op het root-wachtwoord van uw localhost
  • Database naam naar opinion_poll. Merk op dat we de database zullen gebruiken die in de vorige les is gemaakt.
  • Sla de wijzigingen op en sluit het bestand.

Ons model creëren

Vervolgens gaan we ons model maken dat het CI_Model uitbreidt. Het CI_Model maakt deel uit van de CodeIgniter-bibliotheken. Het model bevindt zich in application / models 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);}}?>

HIER,

  • "Class Opinion_poll_model verlengt CI_Model…" is ons model dat het CI_Model uitbreidt
  • "... ouder :: __construct ();" roept de constructor CI_Model aan
  • "$ This-> load-> database ();" laadt de databasebibliotheek zodat onze applicatie kan communiceren met de database
  • "$ This-> db->" is het actieve record van CodeIgniter. Bekijk deze link voor meer informatie over het actieve record.

Onze controller maken Laten we nu de controller maken. We zullen de standaard CodeIgniter-controller gebruiken die zich in application / controllers / welcome.php bevindt. Vervang de broncodes door de volgende code.

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

HIER,

  • "If (! Defined ('BASEPATH')) exit ('Geen directe scripttoegang toegestaan');" zorgt ervoor dat gebruikers niet rechtstreeks toegang hebben tot de controllerklasse
  • “Class Welcome verlengt CI_Controller…” onze controller breidt de CI_Controller class uit
  • "Public function __construct ()" roept de class contructor-methode van CI_Controller aan en laadt ons Opinion_poll_model-model
  • "Public function index () ..." is de functie die wordt toegewezen aan index.php. het gebruikt de invoerklasse van CodeIgniter om te controleren of er een stem is ingediend, voegt het toe aan de database en geeft de resultaten weer. Als de post-array van de invoerklasse leeg is, wordt de stempagina geladen.
  • "$ This-> input-> post ('…')" is de CodeIgniter-invoerklasse die de inhoud van de globale variabele $ _POST oppakt.
  • "$ This-> opinion_poll_model-> add_vote ($ this-> input-> post ('vote')) 'roept de add_vote-methode van het model op om de stem aan de database toe te voegen.

Onze opvattingen creëren

Bedenk uit het vorige voorbeeld dat we twee HTML-pagina's hadden, één voor stemmen en de andere voor resultaten. We zullen dezelfde HTML-code gebruiken met minimale aanpassingen om onze weergaven te creëren. Maak de volgende bestanden in de directory application / views

opinion_poll_form.phpJavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript Library?

JQuery
MooTools
YUI Library
Glow

Laten we nu de resultatenpagina results.php maken

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

Onze applicatie testen

Ervan uitgaande dat de hoofdmap van uw toepassing ciopinion is, bladert u naar http: // localhost / ciopionpoll /

Klik op de knop OK, u ziet het volgende waarschuwingsbericht

Stem op uw favoriete kandidaat en klik op OK. U ziet de volgende resultatenpagina

Gevolgtrekking

CodeIgniter is een eenvoudig te leren en te gebruiken PHP MVC-framework dat de tijd die wordt besteed aan het ontwikkelen van applicaties aanzienlijk kan verkorten.

Overzicht

  • Een raamwerk is een reeks bibliotheken die een gedeeltelijke uitvoering van gemeenschappelijke taken bieden.
  • PHP heeft een aantal open source volwassen en geteste MVC-frameworks.
  • Een goede ontwikkelaanpak scheidt de gegevens van de presentatie en stimuleert het gebruik van één toegangspunt tot een applicatie.
  • Traditionele PHP-applicaties die de best practices van applicatieontwerp volgen, kunnen met minimale aanpassingen worden geport naar MVC-frameworks.