Vodič za PHP MVC okvir: primjer CodeIgnitera

Što je PHP MVC okvir?

PHP MVC je obrazac dizajna aplikacije koji odvaja podatke aplikacije i poslovnu logiku (model) od prezentacije (pogleda). MVC je kratica za Model, View & Controller.

Kontroler posreduje između modela i pogleda.

Razmišljajte o MVC uzorku dizajna kao o automobilu i vozaču.

Automobil ima vjetrobran (pogled) koji vozač (kontrolor) koristi za praćenje prometa ispred, zatim brzinu ili kočnicu (model) ovisno o tome što vidi ispred.

Zašto koristiti PHP MVC Framework?

  • PHP MVC okviri pojednostavljuju rad sa složenim tehnologijama;
    • Skrivanje svih složenih detalja implementacije
    • Pružanje standardnih metoda koje možemo koristiti za izradu naših aplikacija.
    • Povećana produktivnost programera, to je zato što su osnovne implementacije aktivnosti kao što su povezivanje s bazom podataka, dezinfekcija korisničkog unosa itd. već djelomično implementirane.
    • Pridržavanje profesionalnih standarda kodiranja

PHP MVC uzorak dizajna

Hajde sada ukratko raspraviti svaku komponentu MVC uzorka dizajna.

Model – ovaj dio se bavi poslovnom logikom i podacima aplikacije. Može se koristiti za provjeru valjanosti podataka, obradu podataka i njihovo pohranjivanje. Podaci mogu doći iz;

  • ravna turpija
  • baza podataka
  • XML dokument
  • Ostali valjani izvori podataka.

kontrolor – ovo je dio koji se bavi zahtjevima korisnika za resursima s poslužitelja.

Na primjer, kada korisnici traže URL …/index.php?products=list, kontroler će učitati model proizvoda kako bi dohvatio podatke o proizvodima, a zatim prikazati rezultate u prikazu popisa.

Ukratko, kontroler povezuje modele i poglede zajedno ovisno o traženim resursima.

Posjeta – ovaj dio se bavi prezentiranjem podataka korisniku. To je obično u obliku HTML stranica.

Vrste PHP MVC okvira

Odabir najboljeg PHP okvira je izazov.

Ne morate napisati vlastiti okvir da biste imali koristi od prednosti MVC-a.

Trebali biste samo pokušati izraditi vlastiti dizajn aplikacije koji se odnosi na MVC kako biste razumjeli kako rade MVC okviri.

Nakon što se upoznate s načinom na koji MVC okviri rade, trebali biste prijeći na zrele i već testirane okvire.

Donja tablica ukratko opisuje neke od popularnih php okvira i značajke koje svaki okvir nudi.

Okvir Description

CodeIgniter


CodeIgniter


https://codeigniter.com/

To je jedan od najpopularnijih PHP MVC okvira. Lagan je i ima kratku krivulju učenja. Ima bogat skup biblioteka koje pomažu u brzoj izradi web stranica i aplikacija. Korisnici s ograničenim znanjem OOP programiranja također ga mogu koristiti. Aplikacije koje pokreće CodeIgniter uključuju;


kohana


kohana


http://kohanaframework.org

To je hijerarhijski model View Controller HMVC siguran i lagan okvir. Ima bogat skup komponenti za brz razvoj aplikacija. Tvrtke koje koriste Kohanu uključuju;


CakePHP


CakePHP


www.cakephp.org

Napravljen je po uzoru na Ruby on rails. Poznat je po konceptima kao što su obrasci dizajna softvera, konvencija nad konfiguracijom, ActiveRecord itd. CakePHP pokretane aplikacije uključuju;


stari persijski jezik

www.framework.zend.com


stari persijski jezik

To je snažan okvir koji je;

  • Siguran, pouzdan, brz i skalabilan
  • Podržava Web 2.0 i izradu web usluga.

Sadrži API-je dobavljača poput AmazonGoogle, Flickr, Yahoo itd. Idealan je za razvoj poslovnih aplikacija. Aplikacije koje pokreće Zend uključuju;

  • Pimcore CMS,
  • DotKernel.

Tvrtke koje koriste Zend framework uključuju;

  • BBC
  • Cisco
  • Webex
  • Offers.com

Prijenos aplikacije za ispitivanje javnog mnijenja na CodeIgniter

U ovom udžbenik, izradili smo PHP aplikaciju za ankete. Ovdje ćemo taj kod prenijeti na CodeIgniter

  • Preuzimanje najnoviju verziju CodeIgnitera od njihove web stranicu.
  • Ekstrahirajte sadržaj komprimirane datoteke u svoj razvojni direktorij u direktoriju web poslužitelja. Koristit ćemo ciopinionpoll kao naziv mape u ovoj lekciji.
  • Dođite do URL-a http://localhost/ciopinionpoll/

Prijenos aplikacije za ispitivanje javnog mnijenja na CodeIgniter

Sada ćemo prenijeti našu aplikaciju za ispitivanje javnog mnijenja na CodeIgniter. Podsjetimo se da je naša aplikacija bila podijeljena u tri glavne komponente, naime;

  • Prednji kontroler – ovo je dio koji odgovara na URL zahtjeve i vraća traženu stranicu. Ovaj kod će ići u kontroler
  • Model – ovo je kod koji odgovara na tražene podatke i vraća tražene podatke. Ovaj će kod ući u model
  • Pogledi – ovo je kod odgovoran za formatiranje i prikaz podataka. Ovaj kôd će ići u prikaz

    • Pregledajte mapu ciopinionpoll
    • Otvorite baza podataka.php datoteka koja se nalazi u direktoriju aplikacija/konfiguracija.
    • Pronađite sljedeće retke koda

Postavke konfiguracije baze podataka

Postavke konfiguracije baze podataka

  • Postavite korisničko ime na root
  • Postavite lozinku na svoju root lozinku lokalnog hosta
  • Naziv baze podataka za opinion_poll. Imajte na umu da ćemo koristiti bazu podataka stvorenu u prethodnoj lekciji.
  • Spremite promjene i zatvorite datoteku.

Izrada našeg modela

Zatim ćemo kreirati naš model koji će proširiti CI_Model. CI_Model je dio biblioteka CodeIgniter. Model će se nalaziti u aplikaciji/modelima model_ankete_mnijenja.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); 
        } 
   } 
?>

OVDJE,

  • “class Opinion_poll_model extends CI_Model…” je naš model koji proširuje CI_Model
  • “…roditelj:: __construct();” poziva konstruktor CI_Model
  • “$this->load->database();” učitava biblioteku baze podataka tako da naša aplikacija može komunicirati s bazom podataka
  • “$this->db->” je aktivni zapis CodeIgnitera. Provjeri ovo link za više informacija o aktivnom zapisu.

Stvaranje našeg kontrolera Kreirajmo sada kontroler. Koristit ćemo zadani kontroler CodeIgniter koji se nalazi u application/controllers/welcome.php. Zamijenite njegove izvorne kodove sljedećim kodom.

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

OVDJE,

  • “if (!defined('BASEPATH')) exit('Nije dopušten izravan pristup skripti');” osigurava da korisnici ne pristupaju izravno klasi kontrolera
  • “class Welcome extends CI_Controller…” naš kontroler proširuje klasu CI_Controller
  • “javna funkcija __construct()” poziva metodu konstruktora klase CI_Controller i učitava naš model Opinion_poll_model
  • “javna funkcija index()…” je funkcija koja se preslikava na index.php. koristi ulaznu klasu CodeIgnitera za provjeru je li glasovanje poslano, dodaje ga u bazu podataka i prikazuje rezultate. Ako je niz postova ulazne klase prazan, učitava se stranica za glasovanje.
  • “$this->input->post('…')” je CodeIgniter ulazna klasa koja dohvaća sadržaj globalne varijable $_POST.
  • “$this->opinion_poll_model->add_vote($this->input->post('vote'))” poziva metodu modela add_vote za dodavanje glasova u bazu podataka.

Stvaranje naših pogleda

Prisjetite se iz prethodnog primjera da smo imali dvije HTML stranice, jednu za glasovanje, a drugu za rezultate. Koristit ćemo isti HTML kod s minimalnim izmjenama za izradu naših prikaza. Stvorite sljedeće datoteke u direktoriju aplikacija/pogleda

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>

Kreirajmo sada stranicu s rezultatima 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>

Testiranje naše aplikacije

Pod pretpostavkom da je korijenski direktorij vaše aplikacije ciopinion, potražite http://localhost/ciopionpoll/

Testiranje PHP MVC okvira

Kliknite gumb U redu, vidjet ćete sljedeću poruku upozorenja

Testiranje PHP MVC okvira

Glasujte za svog omiljenog kandidata, a zatim kliknite na OK. Vidjet ćete sljedeću stranicu s rezultatima

Testiranje PHP MVC okvira

Zaključak

CodeIgniter je jednostavan za naučiti i koristiti PHP MVC okvir koji može uvelike smanjiti vrijeme potrošeno na razvoj aplikacija.
CodeIgniter je jednostavan za naučiti i koristiti PHP MVC okvir koji može uvelike smanjiti vrijeme potrošeno na razvoj aplikacija.

rezime

  • Okvir je skup biblioteka koje omogućuju djelomičnu implementaciju uobičajenih zadataka.
  • PHP ima niz zrelih i testiranih MVC okvira otvorenog koda.
  • Dobar razvojni pristup odvaja podatke od prezentacije i potiče korištenje jedne ulazne točke u aplikaciju.
  • Tradicionalne PHP aplikacije koje slijede najbolju praksu dizajna aplikacija mogu se prenijeti na MVC okvire uz minimalne izmjene.