Tutorial PHP MVC Framework: Exemplu CodeIgniter

Ce este cadrul PHP MVC?

PHP MVC este un model de proiectare a aplicației care separă datele aplicației și logica de afaceri (modelul) de prezentare (vizualizare). MVC înseamnă Model, View & Controller.

Controlerul mediază între modele și vederi.

Gândiți-vă la modelul de design MVC ca la o mașină și la șofer.

Mașina are parbrize (vizualizare) pe care șoferul (controller) le folosește pentru a monitoriza traficul din față apoi viteza sau frâna (model) în funcție de ceea ce vede în față.

De ce să folosiți PHP MVC Framework?

  • Framework-urile PHP MVC simplifică lucrul cu tehnologii complexe prin;
    • Ascunderea tuturor detaliilor complexe de implementare
    • Furnizarea de metode standard pe care le putem folosi pentru a ne construi aplicațiile.
    • Productivitate crescută a dezvoltatorului, aceasta deoarece implementarea de bază a activităților precum conectarea la baza de date, igienizarea intrărilor utilizatorului etc. sunt deja parțial implementate.
    • Respectarea standardelor profesionale de codare

Model de proiectare PHP MVC

Să discutăm acum pe scurt fiecare componentă a modelului de proiectare MVC.

Modele Usi – această parte se referă la logica afacerii și datele aplicației. Poate fi folosit pentru a efectua validări de date, a procesa date și a le stoca. Datele pot proveni de la;

  • fișier plat
  • Baza de date
  • document XML
  • Alte surse de date valide.

operator de date cu caracter personal, – aceasta este partea care se ocupă de solicitările utilizatorilor de resurse de la server.

De exemplu, atunci când utilizatorii solicită adresa URL …/index.php?products=list, controlerul va încărca modelul produselor pentru a prelua datele despre produse, apoi va scoate rezultatele în vizualizarea listă.

Pe scurt, controlerul leagă modelele și vederile împreună în funcție de resursele solicitate.

Vizualizări – această parte se ocupă de prezentarea datelor către utilizator. Aceasta este de obicei sub formă de pagini HTML.

Tipuri de framework PHP MVC

Selectarea celui mai bun cadru PHP este o provocare.

Nu trebuie să vă scrieți propriul cadru pentru a beneficia de avantajele MVC.

Ar trebui să încercați să vă creați propriul design de aplicație legat de MVC pentru a înțelege cum funcționează cadrele MVC.

Odată ce vă simțiți confortabil cu modul în care funcționează cadrele MVC, ar trebui să treceți la cadrele mature și deja testate.

Tabelul de mai jos descrie pe scurt câteva dintre cadrele php populare și caracteristicile pe care le oferă fiecare cadru.

Cadru Descriere

CodeIgniter


CodeIgniter


https://codeigniter.com/

Este unul dintre cele mai populare cadre PHP MVC. Este ușor și are o curbă scurtă de învățare. Are un set bogat de biblioteci care ajută la construirea rapidă a site-urilor web și a aplicațiilor. Utilizatorii cu cunoștințe limitate despre programarea OOP îl pot folosi și ei. Aplicațiile alimentate cu CodeIgniter includ;


kohana


kohana


http://kohanaframework.org

Este un cadru ierarhic de model View Controller HMVC sigur și ușor. Are un set bogat de componente pentru dezvoltarea rapidă a aplicațiilor. Companiile care folosesc Kohana includ;


CakePHP


CakePHP


www.cakephp.org

Este modelat după Ruby pe șine. Este cunoscut pentru concepte precum modelele de proiectare software, convenția asupra configurației, ActiveRecord etc. CakePHP aplicațiile alimentate includ;


Zend

www.framework.zend.com


Zend

Este un cadru puternic care este;

  • Securizat, fiabil, rapid și scalabil
  • Suportă Web 2.0 și crearea de servicii web.

Dispune de API-uri de la furnizori precum AmazonGoogle, Flickr, Yahoo etc. Este ideal pentru dezvoltarea aplicațiilor de afaceri. Aplicațiile alimentate Zend includ;

  • Pimcore CMS,
  • DotKernel.

Companiile care utilizează cadrul Zend includ;

  • BBC
  • Cisco
  • WebEx
  • Oferte.com

Portarea aplicației sondajului de opinie la CodeIgniter

În acest tutorial, am creat o aplicație de sondaj PHP. Aici, vom porta acel cod la CodeIgniter

  • Download cea mai recentă versiune a CodeIgniter de la lor site-ul web.
  • Extrageți conținutul fișierului arhivat în directorul de dezvoltare din directorul serverului dvs. web. Vom folosi ciopinionpoll ca nume de folder în această lecție.
  • Navigați la adresa URL http://localhost/ciopinionpoll/

Portarea aplicației sondajului de opinie la CodeIgniter

Acum vom porta aplicația noastră de sondaj de opinie la CodeIgniter. Reamintim că aplicația noastră a fost împărțită în trei componente majore și anume;

  • Controler frontal – aceasta este partea care răspunde la solicitările URL și returnează pagina solicitată. Acest cod va intra în controler
  • Model – acesta este codul care răspunde la datele solicitate și returnează datele solicitate. Acest cod va intra în model
  • Vizualizări – acesta este codul responsabil pentru formatarea și afișarea datelor. Acest cod va intra în vizualizare

    • Navigați la folderul ciopinionpoll
    • Deschideți baza de date.php fișier aflat în directorul aplicație/config.
    • Localizați următoarele linii de cod

Setări de configurare a bazei de date

Setări de configurare a bazei de date

  • Setați numele de utilizator la root
  • Setați parola la parola localhost rădăcină
  • Numele bazei de date către opinion_poll. Rețineți că vom folosi baza de date creată în lecția anterioară.
  • Salvați modificările și închideți fișierul.

Crearea modelului nostru

În continuare, vom crea modelul nostru care va extinde CI_Model. CI_Model face parte din bibliotecile CodeIgniter. Modelul va fi localizat în aplicație/modele opinie_sondaj_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); 
        } 
   } 
?>

AICI,

  • „clasa Opinion_poll_model extinde CI_Model...” este modelul nostru care extinde CI_Model
  • „…părinte:: __construct();” apelează constructorul CI_Model
  • „$this->load->database();” încarcă biblioteca bazei de date, astfel încât aplicația noastră să poată interacționa cu baza de date
  • „$this->db->” este înregistrarea activă a CodeIgniter. Verifica acest lucru legătură pentru mai multe informații despre înregistrarea activă.

Crearea controlerului Să creăm acum controlerul. Vom folosi controlerul implicit CodeIgniter situat în application/controllers/welcome.php. Înlocuiți codurile sursă cu următorul cod.

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

AICI,

  • „if (!defined('BASEPATH')) exit('Nu este permis accesul direct la script');” se asigură că utilizatorii nu accesează direct clasa de controler
  • „clasa Bun venit extinde CI_Controller...” controlerul nostru extinde clasa CI_Controller
  • „funcția publică __construct()” apelează metoda constructorului clasei CI_Controller și încarcă modelul nostru Opinion_poll_model
  • „public function index()…” este funcția care se mapează la index.php. folosește clasa de intrare a CodeIgniter pentru a verifica dacă a fost trimis un vot, îl adaugă în baza de date, apoi afișează rezultatele. Dacă matricea de postare a clasei de intrare este goală, se încarcă pagina de vot.
  • „$this->input->post('…')” este clasa de intrare CodeIgniter care preia conținutul variabilei globale $_POST.
  • „$this->opinion_poll_model->add_vote($this->input->post('vote'))” apelează metoda add_vote a modelului pentru a adăuga votul în baza de date.

Crearea vederilor noastre

Amintiți-vă din exemplul anterior că aveam două pagini HTML, una pentru vot și cealaltă pentru rezultate. Vom folosi același cod HTML cu modificări minime pentru a ne crea vizualizările. Creați următoarele fișiere în directorul aplicație/vizualizări

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>

Să creăm acum pagina de rezultate 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>

Testarea aplicației noastre

Presupunând că directorul rădăcină al aplicației dvs. este ciopinion, navigați la http://localhost/ciopionpoll/

Testarea cadrului PHP MVC

Faceți clic pe butonul OK, veți vedea următorul mesaj de alertă

Testarea cadrului PHP MVC

Votați pentru candidatul preferat, apoi faceți clic pe OK. Veți vedea următoarea pagină de rezultate

Testarea cadrului PHP MVC

Concluzie

CodeIgniter este un cadru PHP MVC ușor de învățat și utilizat, care poate reduce foarte mult timpul petrecut pentru dezvoltarea aplicațiilor.
CodeIgniter este un cadru PHP MVC ușor de învățat și utilizat, care poate reduce foarte mult timpul petrecut pentru dezvoltarea aplicațiilor.

Rezumat

  • Un cadru este un set de biblioteci care asigură implementarea parțială a sarcinilor comune.
  • PHP are o serie de cadre MVC open source mature și testate.
  • O abordare bună de dezvoltare separă datele de prezentare și încurajează utilizarea unui singur punct de intrare într-o aplicație.
  • Aplicațiile PHP tradiționale care urmează cele mai bune practici de proiectare a aplicațiilor pot fi portate în cadre MVC cu modificări minime.