PHP MVC raamistiku õpetus: CodeIgniteri näide

Mis on PHP MVC raamistik?

PHP MVC on rakenduse kujundusmuster, mis eraldab rakenduse andmed ja äriloogika (mudel) esitlusest (vaatest). MVC tähistab mudelit, vaadet ja kontrollerit.

Kontroller vahendab mudelite ja vaadete vahel.

Mõelge MVC disainimustrile kui autole ja juhile.

Autol on tuuleklaasid (vaade), mida juht (kontrolör) kasutab eesliikluse jälgimiseks, seejärel kiiruse või pidurdamiseks (mudel) olenevalt sellest, mida ta ees näeb.

Miks kasutada PHP MVC Frameworki?

  • PHP MVC Frameworks lihtsustab keeruliste tehnoloogiatega töötamist;
    • Peida kõik keerukad rakenduse üksikasjad
    • Standardmeetodite pakkumine, mida saame oma rakenduste koostamiseks kasutada.
    • Suurenenud arendaja tootlikkus, kuna selliste tegevuste baasrakendus nagu andmebaasiga ühenduse loomine, kasutaja sisendi puhastamine jne on juba osaliselt rakendatud.
    • Professionaalsete kodeerimisstandardite järgimine

PHP MVC disainimuster

Arutleme nüüd lühidalt MVC disainimustri iga komponendi üle.

MUDEL – see osa käsitleb äriloogikat ja rakenduse andmeid. Seda saab kasutada andmete valideerimiseks, andmete töötlemiseks ja salvestamiseks. Andmed võivad pärineda;

  • lame fail
  • andmebaas
  • XML-dokument
  • Muud kehtivad andmeallikad.

kontroller – see osa käsitleb kasutajate ressursside päringuid serverist.

Näiteks kui kasutajad taotlevad URL-i …/index.php?products=list, laadib kontroller tooteandmete toomiseks tootemudeli, seejärel väljastab tulemused loendivaates.

Lühidalt, kontroller seob mudelid ja vaated olenevalt nõutud ressurssidest.

views – see osa käsitleb andmete esitamist kasutajale. Tavaliselt on see HTML-lehtede kujul.

PHP MVC raamistiku tüübid

Parima PHP raamistiku valimine on väljakutse.

MVC eeliste kasutamiseks ei pea te ise oma raamistikku kirjutama.

Peaksite proovima luua ainult oma MVC-ga seotud rakenduse disaini, et mõista, kuidas MVC-raamistikud töötavad.

Kui olete rahul sellega, kuidas MVC raamistikud töötavad, peaksite liikuma küpsete ja juba testitud raamistike juurde.

Allolev tabel kirjeldab lühidalt mõnda populaarset php-raamistikku ja iga raamistiku pakutavaid funktsioone.

Raamistik Kirjeldus

CodeIgniter


CodeIgniter


https://codeigniter.com/

See on üks populaarsemaid PHP MVC raamistikke. See on kerge ja sellel on lühike õppimiskõver. Sellel on rikkalik kogum teeke, mis aitavad kiiresti veebisaite ja rakendusi luua. Seda saavad kasutada ka kasutajad, kellel on piiratud teadmised OOP programmeerimisest. CodeIgniteri toega rakenduste hulka kuuluvad;


kohana


kohana


http://kohanaframework.org

See on hierarhilise mudelivaate kontrolleri HMVC turvaline ja kerge raamistik. Sellel on rikkalik komponentide komplekt rakenduste kiireks arendamiseks. Kohana't kasutavad ettevõtted hõlmavad järgmist:


CakePHP


CakePHP


www.cakephp.org

See on kujundatud Ruby on rails järgi. See on tuntud selliste kontseptsioonide poolest nagu tarkvara kujundamise mustrid, konfigureerimise konventsioon, ActiveRecord jne. CakePHP toitega rakenduste hulka kuuluvad;


Zend

www.framework.zend.com


Zend

See on võimas raamistik, mis on;

  • Turvaline, usaldusväärne, kiire ja skaleeritav
  • Toetab Web 2.0 ja veebiteenuste loomist.

See sisaldab API-sid sellistelt hankijatelt nagu Amazon, Google Flickr, Yahoo jne. See on ideaalne ärirakenduste arendamiseks. Zendi toega rakenduste hulka kuuluvad;

  • Pimcore CMS,
  • DotKernel.

Zendi raamistikku kasutavad ettevõtted hõlmavad järgmist:

  • BBC
  • Cisco
  • Webex
  • Pakkumised.com

Arvamusküsitluse rakenduse teisaldamine CodeIgniterisse

Selle juhendaja, lõime PHP küsitlusrakenduse. Siin teisaldame selle koodi CodeIgniterisse

  • Lae nende uusim CodeIgniteri versioon kodulehel.
  • Pakkige pakitud faili sisu oma veebiserveri kataloogi oma arenduskataloogi. Selles õppetükis kasutame kausta nimena ciopinionpoll.
  • Sirvige URL-i http://localhost/ciopinionpoll/

Arvamusküsitluse rakenduse teisaldamine CodeIgniterisse

Nüüd teisaldame oma arvamusküsitluse rakenduse CodeIgniterisse. Tuletame meelde, et meie rakendus oli jagatud kolmeks põhikomponendiks, nimelt;

  • Esikontroller – see on osa, mis vastab URL-i päringutele ja tagastab soovitud lehe. See kood läheb kontrollerisse
  • Mudel – see on kood, mis vastab küsitud andmetele ja tagastab nõutud andmed. See kood läheb mudelisse
  • Views – see on kood, mis vastutab andmete vormindamise ja kuvamise eest. See kood kuvatakse vaatesse

    • Sirvige kausta ciopinionpoll
    • avage andmebaas.php fail, mis asub rakenduste/konfiguratsioonikataloogis.
    • Otsige üles järgmised koodiread

Andmebaasi konfiguratsiooni sätted

Andmebaasi konfiguratsiooni sätted

  • Määra kasutajanimeks root
  • Määrake parooliks kohaliku hosti juurparool
  • Andmebaasi nimi arvamuse_küsitlusele. Pange tähele, et me kasutame eelmises õppetükis loodud andmebaasi.
  • Salvestage muudatused ja sulgege fail.

Meie mudeli loomine

Järgmisena loome oma mudeli, mis laiendab CI_Modelit. CI_Model on CodeIgniteri teekide osa. Mudel asub rakenduses/mudelites arvamus_küsitlus_mudel.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); 
        } 
   } 
?>

SIIN,

  • "Class Opinion_poll_model laiendab CI_Modelit..." on meie mudel, mis laiendab mudelit CI_Model
  • "...parent:: __construct();" kutsub CI_Model konstruktorit
  • "$this->load->database();" laadib andmebaasi teegi, et meie rakendus saaks andmebaasiga suhelda
  • “$this->db->” on CodeIgniteri aktiivne kirje. Kontrollige seda link aktiivse kirje kohta lisateabe saamiseks.

Meie kontrolleri loomine Loome nüüd kontrolleri. Kasutame CodeIgniteri vaikekontrollerit, mis asub saidil application/controllers/welcome.php. Asendage selle lähtekoodid järgmise koodiga.

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

SIIN,

  • "if (!defined('BASEPATH')) exit('Otsene skripti juurdepääs pole lubatud');" tagab, et kasutajad ei pääse otse kontrolleriklassile
  • "class Welcome laiendab CI_Controlleri..." meie kontroller laiendab klassi CI_Controller
  • Avalik funktsioon __construct() kutsub välja CI_Controlleri klassi konstruktorimeetodi ja laadib meie Opinion_poll_model mudeli
  • “public function index()…” on funktsioon, mis kaardistab faili index.php. see kasutab CodeIgniteri sisendklassi, et kontrollida, kas hääl on esitatud, lisada see andmebaasi ja kuvada tulemused. Kui sisendklassi postituste massiiv on tühi, laadib see hääletuslehe.
  • “$this->input->post('…')” on CodeIgniteri sisendklass, mis haarab globaalse muutuja $_POST sisu.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” kutsub hääle andmebaasi lisamiseks mudeli add_vote meetodit.

Meie vaadete loomine

Tuletage meelde eelmisest näitest, et meil oli kaks HTML-lehte, üks hääletamiseks ja teine ​​tulemuste jaoks. Kasutame oma vaadete loomiseks sama HTML-koodi minimaalsete muudatustega. Looge rakenduse/vaadete kataloogis järgmised failid

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>

Loome nüüd tulemuste lehe 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>

Meie rakenduse testimine

Eeldades, et teie rakenduse juurkataloog on ciopinion, sirvige http://localhost/ciopionpoll/

PHP MVC raamistiku testimine

Klõpsake nuppu OK, näete järgmist hoiatusteadet

PHP MVC raamistiku testimine

Hääletage oma lemmikkandidaadi poolt ja klõpsake nuppu OK. Näete järgmist tulemuste lehte

PHP MVC raamistiku testimine

Järeldus

CodeIgniter on hõlpsasti õpitav ja kasutatav PHP MVC raamistik, mis võib rakenduste arendamisele kuluvat aega oluliselt vähendada.
CodeIgniter on hõlpsasti õpitav ja kasutatav PHP MVC raamistik, mis võib rakenduste arendamisele kuluvat aega oluliselt vähendada.

kokkuvõte

  • Raamistik on teekide kogum, mis tagab ühiste ülesannete osalise elluviimise.
  • PHP-l on mitmeid avatud lähtekoodiga küpseid ja testitud MVC raamistikke.
  • Hea arendusviis eraldab andmed esitlusest ja julgustab kasutama rakenduses ühtset sisestuspunkti.
  • Traditsioonilisi PHP-rakendusi, mis järgivad rakenduste kujundamise parimaid tavasid, saab minimaalsete muudatustega portida MVC raamistikesse.

Võta see postitus kokku järgmiselt: