CONTATTACI

Guide per aspiranti programmatori

ux designer intenta a condurre ricerche ux al pc
Lezione 5 / 33

Il Pattern MVC

Uno dei concetti fondamentali che ogni programmatore dovrebbe conoscere per sfruttare a pieno le potenzialità della programmazione in Symfony è il pattern MVC o Model-View-Controller. Ma prima di approfondire nel dettaglio questo pattern, è utile fare un passo indietro per spiegare cos’è un Design Pattern.

 

Cos’è un Design Pattern?

META DESCRIPTION: Introduzione ai design pattern, elementi cruciali per strutturare codice efficiente, manutenibile e riutilizzabile.

Nell’ingegneria del software, un design pattern è una soluzione generale e riusabile ad un problema comune che si verifica in contesti specifici durante la progettazione del software

Un design pattern non è uno snippet di codice da riutilizzare all’interno del proprio progetto. Piuttosto, è un modello o una serie di linee guida che aiutano a strutturare il codice in modo da renderlo più efficiente, manutenibile e, in molti casi, riutilizzabile

Il concetto di design pattern è stato reso popolare dal libroDesign Patterns: Elements of Reusable Object-Oriented Software di Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, noti anche come la “Gang of Four” (GoF).

I design pattern possono essere categorizzati in vari modi, ma una delle classificazioni più comuni li divide in tre tipi principali:

  • Creazionali: trattano i meccanismi di creazione degli oggetti. Alcuni esempi sono Singleton, Factory Method e Abstract Factory.
  • Strutturali: riguardano la composizione di classi o oggetti per formare strutture più complesse mantenendole, al tempo stesso, flessibili ed efficienti. Alcuni esempi sono Adapter, Decorator e Composite.
  • Comportamentali: si occupano dell’assegnazione delle responsabilità tra gli oggetti e delle relative interazioni. Alcuni esempi sono Observer, Strategy e Command.

 

A supporto di questa categorizzazione “classica”, nel corso del tempo, sono stati affiancati nuovi pattern e quindi nuove tipologie di pattern. Ad esempio, i pattern architetturali sono modelli di progettazione su larga scala che riguardano l’organizzazione globale del sistema. Uno di essi è proprio MVC.

 

Che Cos’è il pattern MVC?

MVC è l’acronimo di Model-View-Controller. È un design pattern architetturale largamente utilizzato nello sviluppo web. Permette di separare un’applicazione in tre componenti logici interconnessi ma allo stesso tempo indipendenti. Questa suddivisione aiuta a isolare in maniera chiara la logica di business, l’interfaccia utente, le interazioni utente e la gestione del dato rendendo il codice più facile da gestire e da estendere. L’applicazione web risulta, quindi, divisa in tre parti fondamentali:

 

  • Model (M): Il Model si occupa della gestione del dato. Ovvero, logiche di business del dominio applicativo, regole di manipolazione del dato e interazioni con la fonte dati (solitamente un database).
  • View (V): La View è responsabile della rappresentazione grafica dei dati e dell’interfaccia utente. È il componente che l’utente vede e con cui interagisce direttamente. La View riceve dati dal Model e li presenta in un formato che è comprensibile e interagibile per l’utente.
  • Controller (C): Il Controller fa da ponte tra il Model e la View. Gestisce le interazioni utente, elabora le richieste e aggiorna il Model o la View. In altre parole, riceve l’input dall’utente attraverso la View, elabora queste informazioni (eventualmente tramite l’ausilio del Model) e aggiorna la View per riflettere il cambiamento di stato.

 

In basso è illustrato il pattern MVC come discusso nell’elenco precedente.

pattern mvc

 

Perché il pattern MVC è importante in Symfony?

Symfony implementa il pattern MVC in modo molto efficiente. La struttura di directory di un progetto Symfony segue strettamente il pattern MVC con cartelle dedicate per ciascuno dei tre componenti. Questo non solo rende il codice estremamente organizzato, ma facilita anche la scalabilità e la manutenzione. Riassumendo alcuni dei vantaggi offerti dall’adozione del pattern MVC in Symfony:

  • Separazione dei compiti: rende più facile dividere il lavoro in un team di sviluppo. Ogni persona si può concentrare su un componente differente. 
  • Manutenibilità: con una netta divisione tra logica di business, interfaccia utente e controllo dell’applicazione, diventa più semplice apportare modifiche e aggiornamenti senza influenzare altri aspetti del sistema.
  • Riusabilità: è possibile riutilizzare i Model e i Controller con View differenti, o condividere una View tra più Model, rendendo il codice modulare.
  • Testabilità: la separazione dei compiti facilita anche la fase di testing. Si può testare la logica del Model separatamente dalla logica dell’interfaccia utente, rendendo l’intero processo di sviluppo più robusto.

Vediamo ora come ciascuno dei componenti del pattern MVC si manifesta in Symfony.

Model in Symfony

Symfony utilizza Doctrine come ORM (Object-Relational Mapping) per rappresentare e manipolare i dati. In tale ambito, le “entità” Doctrine agiscono come il “Modello”, che incapsula la logica di business e le interazioni con il database. È possibile creare, leggere, aggiornare e cancellare record nel database utilizzando il Model associato ad una determinata tabella.

View in Symfony

In Symfony, la View  è principalmente gestita attraverso un template engine chiamato Twig. Esso permette di separare la logica di presentazione dal codice PHP rendendo più facile progettare e manutenere le interfacce utente. Le viste in Twig possono includere variabili e logica per la presentazione, che vengono compilate in codice PHP puro per la visualizzazione.

Controller in Symfony

I controller in Symfony sono classi PHP che gestiscono le richieste HTTP e contengono la logica necessaria per collegare il Model e la View. In un’applicazione Symfony tipica, un controller riceve una richiesta HTTP, interagisce con il Model per manipolare i dati e prepara la risposta da inviare al client, spesso utilizzando una View per formattare le informazioni ritornate.

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.