Skip to content

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

Il codice PDF del documento è disponibile |QUI|.

I codici del documento sono disponibili |QUI|.

Il modello MVC (Modello-Vista-Controllore) mira a separare nettamente i livelli di presentazione, elaborazione e accesso ai dati. Un’applicazione web che rispetta questo modello sarà strutturata nel modo seguente:

Tale architettura viene spesso definita architettura a 3 livelli o a 3 strati:

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

L'interfaccia utente è spesso un browser web, ma potrebbe anche essere un'applicazione autonoma che, tramite la rete, invia richieste HTTP al servizio web e formatta i risultati che quest'ultimo le invia. La logica applicativa è costituita dagli script che elaborano le richieste dell'utente. La fonte dei dati è spesso un database, ma può trattarsi anche di semplici file di testo, una directory LDAP, un servizio web remoto, ecc. È nell’interesse dello sviluppatore mantenere un’ampia indipendenza tra queste tre entità, in modo che, qualora una di esse cambi, le altre due non debbano subire modifiche o ne subiscano solo in misura minima.

L’architettura MVC è particolarmente adatta alle applicazioni web scritte con linguaggi orientati agli oggetti. Il linguaggio PHP (4.x) non è orientato agli oggetti. È tuttavia possibile impegnarsi a strutturare il codice e l’architettura dell’applicazione in modo da avvicinarsi al modello MVC:

  • La logica di business dell’applicazione verrà collocata in moduli separati da quelli incaricati di gestire il dialogo richiesta-risposta. L’architettura MVC diventa la seguente:

Nel blocco [Logique Applicative] si potranno distinguere:

  • il programma principale o controller, che costituisce il punto di accesso all’applicazione;
  • il blocco [Actions], un insieme di script incaricati di eseguire le azioni richieste dall’utente.
  • il blocco [Classes métier], che raggruppa i moduli PHP necessari alla logica dell’applicazione. Questi sono indipendenti dal client. Ad esempio, la funzione che consente di calcolare un’imposta a partire da determinate informazioni fornite come parametri non deve preoccuparsi di come tali informazioni siano state acquisite.
  • il blocco [Classes d'accès aux données], che raggruppa i moduli PHP che recuperano i dati necessari al controller, spesso dati persistenti (BD, file, ...)
  • i generatori delle viste inviate come risposta al cliente.

Nei casi più semplici, la logica applicativa si riduce spesso a due moduli:

  • il modulo [contrôle] che gestisce il dialogo client-server: elaborazione della richiesta, generazione delle varie risposte
  • il modulo [métier] che riceve dal modulo [contrôle] i dati da elaborare e gli fornisce in cambio i risultati. Questo modulo [métier] gestisce quindi autonomamente l’accesso ai dati persistenti.