Tutorial sul framework PHP MVC: esempio di CodeIgniter

Cos'è il framework PHP MVC?

PHP MVC è un modello di progettazione dell'applicazione che separa i dati dell'applicazione e la logica aziendale (modello) dalla presentazione (vista). MVC sta per Modello, Vista e Controller.

Il controller media tra i modelli e le visualizzazioni.

Pensa al modello di progettazione MVC come a un'auto e al conducente.

L'auto è dotata di parabrezza (vista) che il conducente (controllore) utilizza per monitorare il traffico davanti a sé, quindi la velocità o il freno (modello) a seconda di ciò che vede davanti a sé.

Perché utilizzare PHP MVC Framework?

  • I framework PHP MVC semplificano il lavoro con tecnologie complesse:
    • Nascondere tutti i dettagli complessi dell'implementazione
    • Fornire metodi standard che possiamo utilizzare per creare le nostre applicazioni.
    • Aumento della produttività degli sviluppatori, questo perché l'implementazione di base di attività come la connessione al database, la sanificazione dell'input dell'utente ecc. sono già parzialmente implementate.
    • Aderenza agli standard di codifica professionali

Modello di progettazione MVC PHP

Discutiamo ora brevemente ciascun componente del modello di progettazione MVC.

Modello – questa parte riguarda la logica aziendale e i dati dell'applicazione. Può essere utilizzato per eseguire convalide dei dati, elaborare i dati e archiviarli. I dati possono provenire da;

  • archivio base
  • banca dati
  • Documento XML
  • Altre fonti di dati valide.

Controller – questa è la parte che si occupa delle richieste di risorse da parte degli utenti dal server.

Ad esempio, quando gli utenti richiedono l'URL …/index.php?prodotti=list, il controller caricherà il modello dei prodotti per recuperare i dati dei prodotti, quindi visualizzerà i risultati nella visualizzazione elenco.

In poche parole, il controller collega insieme i modelli e le viste a seconda delle risorse richieste.

Visualizzazioni – questa parte si occupa di presentare i dati all’utente. Questo di solito è sotto forma di pagine HTML.

Tipi di framework PHP MVC

Selezionare il miglior framework PHP è una sfida.

Non è necessario scrivere il proprio framework per beneficiare dei vantaggi di MVC.

Dovresti solo tentare di creare la tua progettazione di applicazioni correlate a MVC per comprendere come funzionano i framework MVC.

Una volta che ti senti a tuo agio con il funzionamento dei framework MVC, dovresti passare ai framework maturi e già testati.

La tabella seguente descrive brevemente alcuni dei framework php più diffusi e le funzionalità offerte da ciascun framework.

Contesto Descrizione

CodeIgniter


CodeIgniter


https://codeigniter.com/

È uno dei framework PHP MVC più popolari. È leggero e ha una breve curva di apprendimento. Dispone di un ricco set di librerie che aiutano a creare rapidamente siti Web e applicazioni. Possono utilizzarlo anche gli utenti con una conoscenza limitata della programmazione OOP. Le applicazioni basate su CodeIgniter includono;


kohana


kohana


http://kohanaframework.org

È un framework HMVC sicuro e leggero Hierarchical Model View Controller. Ha un ricco set di componenti per sviluppare applicazioni rapidamente. Le aziende che usano Kohana includono;


CakePHP


CakePHP


www.cakephp.org

È modellato su Ruby su rotaie. È noto per concetti come modelli di progettazione software, convenzione sulla configurazione, ActiveRecord ecc. CakePHP le applicazioni alimentate includono;


Zend

www.framework.zend.com


Zend

Si tratta di una struttura potente;

  • Sicuro, affidabile, veloce e scalabile
  • Supporta il Web 2.0 e la creazione di servizi web.

Presenta API di fornitori come Amazon, Google, Flickr, Yahoo ecc. È ideale per lo sviluppo di applicazioni aziendali. Le applicazioni basate su Zend includono;

  • Pimcore CMS,
  • DotKernel.

Le aziende che utilizzano il framework Zend includono;

  • BBC
  • Cisco
  • Webex
  • Offerte.com

Porting dell'applicazione per sondaggi d'opinione su CodeIgniter

In questa lezione, abbiamo creato un'applicazione di sondaggio PHP. Qui porteremo quel codice su CodeIgniter

  • Scaricare l'ultima versione di CodeIgniter dal loro di LPI.
  • Estrai il contenuto del file zippato nella directory di sviluppo nella directory del tuo server web. Utilizzeremo ciopinionpoll come nome della cartella in questa lezione.
  • Passare all'URL http://localhost/ciopinionpoll/

Porting dell'applicazione per sondaggi d'opinione su CodeIgniter

Ora trasferiremo la nostra applicazione per sondaggi d'opinione su CodeIgniter. Ricordiamo che la nostra applicazione era divisa in tre componenti principali, vale a dire;

  • Front controller: questa è la parte che risponde alle richieste URL e restituisce la pagina richiesta. Questo codice entrerà nel controller
  • Modello – questo è il codice che risponde ai dati richiesti e restituisce i dati richiesti. Questo codice andrà nel modello
  • Visualizzazioni: questo è il codice responsabile della formattazione e della visualizzazione dei dati. Questo codice verrà visualizzato

    • Sfoglia la cartella ciopinionpoll
    • Aprire il database.php file situato nella directory application/config.
    • Individuare le seguenti righe di codice

Impostazioni di configurazione del database

Impostazioni di configurazione del database

  • Imposta il nome utente su root
  • Imposta la password sulla password root dell'host locale
  • Nome del database su opinion_poll. Nota che utilizzeremo il database creato nella lezione precedente.
  • Salva le modifiche e chiudi il file.

Creare il nostro modello

Successivamente creeremo il nostro modello che estenderà CI_Model. CI_Model fa parte delle librerie CodeIgniter. Il modello si troverà in applicazione/modelli 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); 
        } 
   } 
?>

QUI,

  • “class Opinion_poll_model extends CI_Model…” è il nostro modello che estende CI_Model
  • “…genitore:: __construct();” chiama il costruttore CI_Model
  • "$questo->carica->database();" carica la libreria del database in modo che la nostra applicazione possa interagire con il database
  • "$this->db->" è il record attivo di CodeIgniter. Controllare questo link per ulteriori informazioni sul record attivo.

Creazione del nostro controller Ora creiamo il controller. Utilizzeremo il controller predefinito CodeIgniter che si trova in application/controllers/welcome.php. Sostituisci i suoi codici sorgente con il seguente codice.

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

QUI,

  • "if (!Definito('BASEPATH')) exit('Nessun accesso diretto allo script consentito');" garantisce che gli utenti non accedano direttamente alla classe controller
  • “class Welcome extends CI_Controller…” il nostro controller estende la classe CI_Controller
  • La "funzione pubblica __construct()" chiama il metodo del costruttore della classe CI_Controller e carica il nostro modello Opinion_poll_model
  • “public function index()…” è la funzione che si associa a index.php. utilizza la classe di input di CodeIgniter per verificare se è stato inviato un voto, aggiungerlo al database quindi visualizzare i risultati. Se l'array post della classe di input è vuoto, carica la pagina di votazione.
  • “$this->input->post('…')” è la classe di input di CodeIgniter che acquisisce il contenuto della variabile globale $_POST.
  • "$this->opinion_poll_model->add_vote($this->input->post('vote'))" chiama il metodo add_vote del modello per aggiungere il voto nel database.

Creare le nostre opinioni

Ricordate dall'esempio precedente che avevamo due pagine HTML, una per il voto e l'altra per i risultati. Useremo lo stesso codice HTML con modifiche minime per creare le nostre viste. Create i seguenti file nella 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>

Creiamo ora la pagina dei risultati 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>

Testare la nostra applicazione

Supponendo che la directory root della tua applicazione sia ciopinion, vai a http://localhost/ciopionpoll/

Test del framework PHP MVC

Cliccando sul pulsante OK, verrà visualizzato il seguente messaggio di avviso

Test del framework PHP MVC

Vota il tuo candidato preferito, quindi clicca su OK. Visualizzerai la seguente pagina dei risultati

Test del framework PHP MVC

Conclusione

CodeIgniter è un framework PHP MVC facile da apprendere e da utilizzare che può ridurre notevolmente il tempo impiegato nello sviluppo di applicazioni.
CodeIgniter è un framework PHP MVC facile da apprendere e da utilizzare che può ridurre notevolmente il tempo impiegato nello sviluppo di applicazioni.

Sommario

  • Un framework è un insieme di librerie che forniscono l'implementazione parziale di attività comuni.
  • PHP dispone di una serie di framework MVC open source maturi e testati.
  • Un buon approccio allo sviluppo separa i dati dalla presentazione e incoraggia l'uso di un unico punto di ingresso in un'applicazione.
  • Le applicazioni PHP tradizionali che seguono le migliori pratiche di progettazione delle applicazioni possono essere trasferite nei framework MVC con modifiche minime.