CodeEsempio del framework Igniter MVC (Model View Controller)
⚡ Riepilogo intelligente
CodeIl framework Igniter MVC suddivide un'applicazione in Model, View e Controller. Il modello gestisce i dati e la logica di business, il controller coordina le richieste e la vista presenta il risultato, garantendo un accoppiamento debole, flessibilità e una maggiore produttività degli sviluppatori.
Che cos'è MVC?
MVC è l'acronimo di Model-View-Controller. Si tratta di un modello architetturale che suddivide l'applicazione in tre componenti principali:
- Il modello si occupa della logica aziendale e delle interazioni con il database.
- Il controller coordina le attività tra il modello e la vista.
- La vista è responsabile della presentazione dei dati.
Di seguito sono elencati alcuni dei vantaggi del modello architetturale MVC:
- Accoppiamento debole: i componenti esistono e funzionano indipendentemente l'uno dall'altro.
- Flessibilità: è possibile apportare facilmente modifiche ai singoli componenti.
- Maggiore produttività: più persone possono lavorare al progetto contemporaneamente. Gli sviluppatori front-end possono concentrarsi su interfacce e presentazione, mentre gli sviluppatori back-end si dedicano ai modelli e, grazie al disaccoppiamento del sistema, tutto funziona in modo integrato.
Modello
Il modello è responsabile dell'interazione con le fonti di dati. Solitamente si tratta di un database, ma può anche essere un servizio che fornisce i dati richiesti. È inoltre prassi comune mantenere la logica di business nei modelli anziché nel controller. Questa pratica viene solitamente definita "modello grasso, controller snello".
Il modello in genere scrive i dati nel database e fornisce un meccanismo per la modifica, l'aggiornamento e la cancellazione dei dati. Nelle moderne applicazioni web, i modelli utilizzano modelli di progettazione per l'accesso ai dati, come Active Record, per semplificare l'interazione con il database.
Per esempio, CodeIgniter utilizza una libreria Active Record integrata per supportare i modelli, mentre altri framework come Laravel utilizzano Eloquent Object Relational Mapper (ORM) per l'accesso ai dati.
Controller
Il controller è in ascolto delle richieste di risorse provenienti dagli utenti. Funge da intermediario tra il modello e la vista e, a volte, implementa anche alcune regole aziendali. Supponiamo che il controller riceva una richiesta di registrazione di un utente nel database.
Il controller può eseguire la convalida dei dati inviati per assicurarsi che tutti i parametri richiesti siano presenti. Se manca qualcosa, l'utente viene reindirizzato alla pagina di registrazione con un messaggio di errore appropriato. Il controller può anche richiedere al modello di eseguire ulteriori convalide, come ad esempio verificare se l'indirizzo email inviato esiste già. Se tutte le regole di convalida hanno esito positivo, il controller invia i dati al modello per l'elaborazione e attende la risposta.
Una volta che il modello ha elaborato le informazioni e ha restituito una risposta positiva, il controller carica la vista appropriata e passa i dati restituiti dal modello come parametro.
Visualizzare
La vista si occupa dei dati presentati all'utente finale. Nelle applicazioni Web, le visualizzazioni spesso contengono HTML, CSS e facoltativamente JavaCopioneLe viste contengono un codice di programmazione minimo, di solito sufficiente solo per scorrere le raccolte di dati ricevute dal modello, o una funzione di supporto per la pulizia dei dati o la creazione di link di modifica. La maggior parte delle applicazioni web moderne utilizza motori di template con una propria sintassi simile allo pseudocodice che i progettisti possono comprendere. Quando si lavora con CodeIn Igniter, è prassi comune utilizzare tag PHP brevi e strutture di controllo. Per visualizzare qualcosa in CodeIgniter, potresti utilizzare il seguente codice:
<?=$title?>
Al contrario di:
<?php
echo $title;
?>
Le strutture di controllo vengono generalmente scritte nel modo seguente:
<?php foreach ($customers as $customer): ?> <li> <p><?=$customer->first_name?></p> </li> <?php endforeach; ?>
Come puoi vedere dall'esempio sopra, la vista utilizza una combinazione di PHP e HTML invece di racchiudere tutto nel puro codice PHP.
Come funzionano i framework MVC
L'immagine seguente mostra come funziona il framework MVC.
Un controller riceve la richiesta dall'utente, interagisce con il modello del database se necessario, quindi restituisce il risultato al browser sotto forma di codice HTML, che il browser interpreta in un formato leggibile dall'uomo e visualizza all'utente.
CodeControllore di accensione
Analizziamo ora cosa è successo quando abbiamo caricato il URL Accedi al browser web. Apri il file Welcome.php controller che si trova nella cartella application/controllers. Dovresti visualizzare il seguente codice:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Qui:
- defined('BASEPATH') OR exit('No direct script access allowed'); impedisce l'accesso diretto al controller se la richiesta non è arrivata tramite index.php. Questo per motivi di sicurezza.
- La classe Welcome estende CI_Controller {…} definisce la classe controller Welcome ed estende la classe padre CI_Controller.
- la funzione pubblica index(){…} definisce il metodo index che risponde a URL
http://localhost:3000. - $this->load->view('welcome_message'); carica la vista welcome_message situata nella directory application/views.
Aggiorneremo ora il metodo index come segue:
public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}
Qui:
- $this->load->model('customers_model'); carica il modello dei clienti.
- $data['customer'] = $this->customers_model->get_customer(3); chiama il metodo get_customer di customers_model e passa il parametro 3. In questo esempio abbiamo codificato il valore in modo statico, ma nelle applicazioni reali questo sarebbe un parametro dall'URI.
- $this->load->view('welcome_message',$data); carica la vista welcome_message e passa la variabile $data.
CodeModello di accenditore
Creiamo ora il modello a cui si fa riferimento nel codice sopra. Per semplicità, il nostro modello non interagirà con il banca dati ma restituirà un record cliente statico. Lavoreremo con i database nei prossimi tutorial. Crea un file Customers_model.php nella cartella application/models e aggiungi il seguente codice:
<?php class Customers_model extends CI_Model { public function get_customer($id) { $data['id'] = 3; $data['first_name'] = 'John'; $data['last_name'] = 'Doe'; $data['address'] = 'Kingstone'; return $data; } }
Qui:
- class Customers_model extends CI_Model {…} definisce il modello Customers_model che estende CI_Model.
- La funzione pubblica get_customer($id) {…} definisce il metodo get_customer in base a un ID cliente.
- $data[…] definisce i valori statici del nostro cliente fittizio. Dovrebbe trattarsi di una riga restituita dal database.
- restituire $dati; restituisce i dati del cliente.
Questo è tutto per il nostro modello. Modifichiamo ora la vista welcome_message. Apri welcome_message.php che si trova in:
application/views/welcome_message.php
Sostituisci il codice con il seguente:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter MVC Basics</title> </head> <body> <h1>Customer Details Card</h1> <p>Customer ID : <strong><?=$customer['id']?></strong></p> <p>First Name : <strong><?=$customer['first_name']?></strong></p> <p>Last Name : <strong><?=$customer['last_name']?></strong></p> <p>Address : <strong><?=$customer['address']?></strong></p> </body> </html>
Salva le modifiche e carica quanto segue URL nel browser web: http://localhost:3000/Dovresti visualizzare la scheda cliente come mostrato nell'immagine sottostante.



