PHP MVC Framework Tutorial: CodeIgniter Eksempel

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 chauffør.

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

Hvorfor bruge PHP MVC Framework?

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

PHP MVC-designmønster

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

Model – denne del handler om forretningslogikken og applikationsdataene. Den 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 omhandler brugernes anmodninger om ressourcer fra serveren.

Som et eksempel, når brugerne anmoder om URL'en …/index.php?products=list, vil controlleren indlæse produktmodellen for at hente produktdataene og derefter udlæse resultaterne i listevisningen.

I en nøddeskal forbinder controlleren modellerne og visningerne sammen afhængigt af de ønskede ressourcer.

Views – denne del omhandler præsentation af data for brugeren. Dette er normalt i form af HTML-sider.

Typer af PHP MVC-ramme

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

Du behøver ikke at skrive din egen ramme for at få glæde af fordelene ved MVC.

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

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

Tabellen nedenfor beskriver kort nogle af de populære php-frameworks og de funktioner, som hvert framework tilbyder.

Framework Description

CodeIgniter


CodeIgniter


https://codeigniter.com/

Det er en af ​​de mest populære PHP MVC-frameworks. Den er let og har en kort indlæringskurve. Det har et rigt sæt af biblioteker, der hjælper med at bygge websteder og applikationer hurtigt. Brugere med begrænset kendskab til OOP-programmering kan også bruge det. CodeIgniter-drevne applikationer inkluderer;


kohana


kohana


http://kohanaframework.org

Det er en Hierarchical Model View Controller HMVC sikker og let ramme. Den har et rigt sæt komponenter til hurtig udvikling af applikationer. Virksomheder der bruger Kohana inkluderer;


CakePHP


CakePHP


www.cakephp.org

Den er modelleret efter Ruby on rails. Det er kendt for koncepter som softwaredesignmønstre, konvention over konfiguration, ActiveRecord osv. CakePHP drevne applikationer omfatter;


Zend

www.framework.zend.com


Zend

Det er en kraftfuld ramme, der er;

  • Sikker, pålidelig, hurtig og skalerbar
  • Understøtter Web 2.0 og oprettelse af webtjenester.

Den har API'er fra leverandører som AmazonGoogle, 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

Overførsel af meningsmålingsapplikationen til CodeIgniter

I denne tutorial, har vi oprettet en PHP-afstemningsapplikation. Her vil vi portere den kode til CodeIgniter

  • Hent den seneste version af CodeIgniter fra deres internet side.
  • Udpak indholdet af den zippede fil til din udviklingsmappe i dit webserverbibliotek. Vi vil bruge ciopinionpoll som mappenavn i denne lektion.
  • Gå til URL'en http://localhost/ciopinionpoll/

Overførsel af meningsmålingsapplikationen til CodeIgniter

Vi vil nu overføre vores meningsmålingsapplikation til CodeIgniter. Husk på, 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 vil gå ind i controlleren
  • Model – dette er koden, der reagerer på anmodede data og returnerer de anmodede data. Denne kode vil gå ind i modellen
  • Visninger – dette er koden, der er ansvarlig for formatering og visning af dataene. Denne kode vil gå ind i visningen

    • Gennemse mappen ciopinionpoll
    • Åbne database.php fil, der er placeret i program-/konfigurationsmappen.
    • Find følgende kodelinjer

Indstillinger for databasekonfiguration

Indstillinger for databasekonfiguration

  • Indstil brugernavnet til root
  • Indstil adgangskoden til din localhost root-adgangskode
  • Databasenavn til opinion_poll. Bemærk, at vi vil bruge databasen oprettet i forrige lektion.
  • Gem ændringerne og luk filen.

At skabe vores model

Dernæst skal vi skabe vores model, der vil udvide CI_Model. CI_Model er en del af CodeIgniter-bibliotekerne. Modellen vil være placeret 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); 
        } 
   } 
?>

HER,

  • "class Opinion_poll_model udvider CI_Model..." er vores model, der udvider CI_Model
  • "...forælder:: __construct();" kalder CI_Model-konstruktøren
  • "$this->load->database();" indlæser databasebiblioteket, så vores applikation kan interagere med databasen
  • "$this->db->" er CodeIgniters aktive registrering. Tjek det her link for mere information om den aktive post.

Oprettelse af vores controller Lad os nu oprette controlleren. Vi vil bruge standard CodeIgniter-controlleren placeret i application/controllers/welcome.php. Erstat dens kildekoder med følgende kode.

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

HER,

  • "if (!defined('BASEPATH')) exit('Ingen direkte scriptadgang tilladt');" sikrer, at brugerne ikke får direkte adgang til controllerklassen
  • "class Welcome udvider CI_Controller..." vores controller udvider CI_Controller-klassen
  • "public function __construct()" kalder CI_Controllers klassekonstruktormetode og indlæser vores Opinion_poll_model model
  • "public function index()..." er den funktion, der er knyttet til index.php. den bruger CodeIgniters inputklasse til at kontrollere, om en stemme er blevet afgivet, føj den til databasen og få vist resultaterne. Hvis post-arrayet for inputklassen er tomt, indlæser det afstemningssiden.
  • "$this->input->post('...')" er CodeIgniter-inputklassen, der fanger indholdet af den globale variabel $_POST.
  • "$this->opinion_poll_model->add_vote($this->input->post('vote'))" kalder modellens add_vote metode til at tilføje stemmen til databasen.

Oprettelse af vores synspunkter

Husk fra det forrige eksempel, at vi havde to HTML-sider, en til afstemning og den anden til resultater. Vi vil bruge den samme HTML-kode med minimale ændringer for at skabe vores synspunkter. Opret følgende filer i program-/visningsmappen

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>

Lad os nu oprette resultatsiden 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>

Tester vores applikation

Hvis du antager, at din applikations rodbibliotek er ciopinion, skal du gå til http://localhost/ciopionpoll/

PHP MVC framework test

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

PHP MVC framework test

Stem på din favoritkandidat og klik derefter på OK. Du vil se følgende resultatside

PHP MVC framework test

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.
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 af biblioteker, der leverer delvis implementering af fælles opgaver.
  • PHP har en række open source-modne og testede MVC-rammer.
  • En god udviklingstilgang adskiller data fra præsentationen og opfordrer til brugen af ​​et enkelt indgangspunkt i en applikation.
  • Traditionelle PHP-applikationer, der følger bedste praksis for applikationsdesign, kan overføres til MVC-frameworks med minimale ændringer.