Skip to content

1. Utilizzo dell'architettura MVC nelle applicazioni web/PHP

Il PDF del documento è disponibile |QUI|.

Il codice del documento è disponibile |QUI|.

Il modello MVC (Model-View-Controller) mira a separare chiaramente i livelli di presentazione, elaborazione e accesso ai dati. Un'applicazione web che segue questo modello sarà strutturata come segue:

Tale architettura viene spesso definita architettura a 3 livelli:

  • l'interfaccia utente è la vista (V)
  • la logica applicativa è il controller (C)
  • le fonti di dati sono il modello (M)

L'interfaccia utente è spesso un browser web, ma potrebbe anche essere un'applicazione autonoma che invia richieste HTTP al servizio web attraverso la rete e formatta i risultati ricevuti. La logica applicativa consiste in script che elaborano le richieste degli utenti. La fonte di dati è spesso un database, ma può anche trattarsi di semplici file flat, una directory LDAP, un servizio web remoto, ecc. È nell'interesse dello sviluppatore mantenere un alto grado di indipendenza tra queste tre entità, in modo che se una di esse cambia, le altre due non debbano cambiare, o solo in misura minima.

L'architettura MVC è particolarmente adatta alle applicazioni web scritte in linguaggi orientati agli oggetti. Il linguaggio PHP (4.x) non è orientato agli oggetti. Tuttavia, è possibile strutturare il codice e l'architettura dell'applicazione in modo da allinearli maggiormente al modello MVC:

  • Collochiamo la logica di business dell'applicazione in moduli separati da quelli responsabili della gestione del dialogo richiesta-risposta. L'architettura MVC diventa la seguente:

All'interno del blocco [Logica dell'applicazione], possiamo distinguere:

  • il programma principale o controller, che funge da punto di ingresso dell’applicazione.
  • il blocco [Azioni], un insieme di script responsabili dell'esecuzione delle azioni richieste dall'utente.
  • il blocco [Classi di business], che raggruppa i moduli PHP necessari per la logica dell'applicazione. Questi sono indipendenti dal client. Ad esempio, la funzione che calcola un'imposta sulla base di determinate informazioni fornite come parametri non deve preoccuparsi di come tali informazioni siano state ottenute.
  • il blocco [Data Access Classes], che contiene i moduli PHP che recuperano i dati necessari al controller, spesso dati persistenti (database, file, ecc.)
  • i generatori di viste che inviano le viste come risposta al client.

Nei casi più semplici, la logica dell'applicazione è spesso ridotta a due moduli:

  • il modulo [controllo] che gestisce la comunicazione client-server: elaborazione della richiesta, generazione di varie risposte
  • il modulo [logica di business], che riceve i dati da elaborare dal modulo [controller] e gli fornisce i risultati in cambio. Questo modulo [logica di business] gestisce poi l'accesso ai dati persistenti.