PHP MVC Framework-zelfstudie: CodeIgniter-voorbeeld

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

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

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

Waarom PHP MVC Framework gebruiken?

  • PHP MVC Frameworks vereenvoudigen het werken met complex technologieën door;
    • Alle com verbergenplex implementatie details
    • 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, het opschonen van gebruikersinvoer enz. al gedeeltelijk zijn geïmplementeerd.
    • Naleving van professionele coderingsnormen

PHP MVC-ontwerppatroon

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

Model – dit deel gaat over de bedrijfslogica en de applicatiegegevens. Het kan worden gebruikt om gegevensvalidaties uit te voeren, gegevens te verwerken en op te slaan. De gegevens kunnen afkomstig zijn van;

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

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

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

Kort gezegd koppelt de controller de modellen en views aan elkaar, afhankelijk van de gevraagde bronnen.

keer bekeken – dit deel gaat over het presenteren van de gegevens aan de gebruiker. Dit is meestal in de vorm van HTML-pagina's.

Soorten PHP MVC-framework

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

U hoeft geen eigen raamwerk te schrijven om te profiteren van de voordelen van MVC.

Probeer alleen 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 overstappen op de volwassen en reeds geteste frameworks.

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

Achtergrond Omschrijving

CodeIgniter


CodeIgniter


https://codeigniter.com/

Het is een van de meest populaire PHP MVC-frameworks. Het is lichtgewicht en heeft een korte leercurve. Het heeft een rijke reeks bibliotheken waarmee u snel websites en applicaties kunt bouwen. Gebruikers met beperkte kennis van OOP-programmering kunnen het ook gebruiken. Door CodeIgniter aangedreven applicaties omvatten;


kohana


kohana


http://kohanaframework.org

Het is een Hierarchical Model View Controller HMVC veilig en lichtgewicht raamwerk. Het heeft een rijke reeks componenten voor het snel ontwikkelen van applicaties. Bedrijven die Kohana gebruiken zijn onder meer;


CakePHP


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 toepassingen omvatten;


Zend

www.framework.zend.com


Zend

Het is een krachtig raamwerk dat is;

  • Veilig, betrouwbaar, snel en schaalbaar
  • Ondersteunt Web 2.0 en het creëren van webservices.

Het beschikt over API's van leveranciers zoals Amazon, Google, Flickr, Yahoo enz. 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
  • Aanbiedingen.com

De opiniepeilingtoepassing overzetten naar CodeIgniter

In deze zelfstudie, hebben we een PHP-poll-applicatie gemaakt. Hier zullen we die code overbrengen naar CodeIgniter

  • Downloaden de nieuwste versie van CodeIgniter van hun website.
  • Pak de inhoud van het gezipte bestand uit naar uw ontwikkelingsmap in de map van uw webserver. In deze les gebruiken we ciopinionpoll als mapnaam.
  • Blader naar de URL http://localhost/ciopinionpoll/

De opiniepeilingtoepassing overzetten naar CodeIgniter

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

  • Frontcontroller – dit is het onderdeel dat reageert op URL-verzoeken en de opgevraagde pagina retourneert. Deze code komt in de controller
  • Model – dit is de code die reageert op de gevraagde gegevens en de gevraagde gegevens retourneert. Deze code wordt in het model geplaatst
  • Weergaven – dit is de code die verantwoordelijk is voor het opmaken en weergeven van de gegevens. Deze code wordt in de weergave weergegeven

    • Blader naar de map ciopinionpoll
    • Open de database.php bestand in de map application/config.
    • Zoek het volgendewing regels code

Instellingen voor databaseconfiguratie

Instellingen voor databaseconfiguratie

  • Stel de gebruikersnaam in op root
  • Stel het wachtwoord in op uw localhost root-wachtwoord
  • Databasenaam naar opiniepeiling. Let op: we zullen de database 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 zal uitbreiden. Het CI_Model maakt deel uit van de CodeIgniter-bibliotheken. Het model bevindt zich in applicatie/modellen opiniepeiling_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); 
        } 
   } 
?>

HIER,

  • "class Opinion_poll_model breidt CI_Model uit..." is ons model dat het CI_Model uitbreidt
  • “…ouder:: __construct();” roept de CI_Model-constructor aan
  • “$dit->laden->database();” laadt de databasebibliotheek zodat onze applicatie kan communiceren met de database
  • “$this->db->” is het actieve record van CodeIgniter. Check dit 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 following code.

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

HIER,

  • “if (!gedefinieerd('BASEPATH')) exit('Geen directe scripttoegang toegestaan');” zorgt ervoor dat gebruikers niet rechtstreeks toegang krijgen tot de controllerklasse
  • "class Welcome breidt CI_Controller uit..." onze controller breidt de klasse CI_Controller uit
  • “public function __construct()” roept de class constructor-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 uitgebracht, voegt deze toe aan de database en geeft vervolgens 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 ophaalt.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” roept de add_vote-methode van het model aan 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 volgendewing bestanden in de directory application/views

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>

Laten we nu de resultatenpagina results.php maken

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

Onze applicatie testen

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

PHP MVC-framework testen

Klik op de knop OK, u ziet het volgendewing waarschuwingsbericht

PHP MVC-framework testen

Stem op uw favoriete kandidaat en klik vervolgens op OK. U ziet het volgendewing resultatenpagina

PHP MVC-framework testen

Conclusie

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

Samengevat

  • Een raamwerk is een reeks bibliotheken die een gedeeltelijke implementatie van algemene taken mogelijk maken.
  • PHP heeft een aantal open source volwassen en geteste MVC-frameworks.
  • Een goede ontwikkelingsaanpak scheidt de gegevens van de presentatie en moedigt het gebruik van één toegangspunt tot een applicatie aan.
  • Traditionele PHP-applicaties die de best practices voor applicatieontwerp volgen, kunnen met minimale aanpassingen worden overgezet naar MVC-frameworks.