Pattern MVC in PHP
La progettazione di una Web application in php risulta spesso “difficoltosa”, inquanto richiede una notevole mole di codice da scrivere per giungere ad un prodotto stabile e funzionante, come avviene un pò per tutti i linguaggi di scripting.
Infatti molto spesso si preferisce l’utilizzo di un CMS (es. Wordpress, Joomla ecc.), grazie ai quali si riesce ad abbattere il 90% di tempo richiesto dallo sviluppo di un’ applicazione, permettendo di concentrarsi esclusivamente su un problema e non su quelli dovuti al flusso dell’applicazione. Ma quando ci si trova di fronte ad un progetto non adattabile ad un cms? Li allora bisogna fare molto attenzione, basta sbagliare un paio di elementi e ci si trova a rattoppare l’intera applicazione, rendendola complicata da gestire ed estendere in ogni sua minima parte.
Per evitare una gestione inconsueta delle applicazioni e del loro flusso di lavoro, conviene affidarsi affidarsi ad uno o più design pattern (in base all’esigenza e alla tipologia di applicazione/ambiente di sviluppo), che rappresentano dei modelli logici e strutturali, in grado di offrire una soluzione generale a problemi ricorrenti durante la fase di svilutto di un software.
Esistono vari tipi di pattern, quello di cui oggi analizzeremo nella sua strutture (MVC) , fa parte dei Pattern architetturali che non sono dei veri e propri design pattern, ma rappresentano dei modelli per l’organizzazione architetturale di un software.
Il pattern MVC o Model-View-Controller nello specifico, divide l’architettura dell’applicazione in 3 componenti software:
- Controller (si occupa di gestire il tipo di View da utilizzare e spesso è affiancato nelle applicazioni web da un altro componente: Router, che si occupa della gestione dei parametri (Query String, POST, ecc.)
- View (si occupa della fase di render dell’applicazione e viene richiamato dal Controller, che in base ai parametri interpretati dal Router, decide quale sia la View da utilizzare)
- Model (si occupa della gestione dei dati e dei loro metodi es. CRUD )
Ecco un grafico che illustra per sommi capi, cosa accade quando si visita una pagina (ipotetica) di un articolo su un sito che implementa il pattern MVC:
L’MVC rappresenta il pattern più diffuso nelle applicazioni web poichè come logica strutturale è quello più si avvicina al protocollo http. Attualmente esistono molti framework RAD (Rapid Application Development) in php che utilizzano questo pattern tra i più famosi: Symfony, CodeIgniter, Zend Framework, CakePHP che offrono un’ottima base completa per sviluppo di un’applicazione. In alternativa, come vedremo nel mio prossimo articolo, proveremo ad implementarlo senza l’utilizzo di un framework.