CodeIgniter e il pattern MVC

codeigniter_logoIl pattern MVC (model-view-controller) permette di separare la logica dell’applicazione dalla visualizzazione dei dati rendendo il codice più snello e manutenibile. In questo tutorial vedremo come sia possibile estrarre i dati da una semplice table MySQL utilizzando il framework PHP CodeIgniter e rispettando tale pattern.
Per rendere più comprensibile la logica alla base del pattern MVC procederemo per gradi vedendo come sia possibile stampare sul browser i dati estratti da un db prima esclusivamente attraverso un controller, poi introducendo un model, infine rendendo la nostra applicazione del tutto conforme ai requisiti del pattern con l’aggiunta di una view.
Prima di procedere con il tutorial, requisito necessario è la configurazione del nostro database all’interno del file application/config/database.php, che dovrà apparire all’incirca così:

Caso 1: controller
In questo primo esempio deleghiamo al controller tutti i compiti dell’applicazione, con il risultato di avere un unico file controllo.php al cui interno viene gestito tutto quanto, la connessione al database, la logica dell’applicazione e la formattazione dei contenuti sul browser. Vediamo il codice:

Caso 2: controller + model
Questa volta il recupero dei dati sarà effettuato all’interno del modello. Vediamo, quindi, come cambia il codice del controller, cui spetta proprio recuperare i dati dal model, ma non più accedere al database:

Ecco come si presenta il codice del file modello.php:

Caso 3: controller + model + view
Completiamo l’esempio introducendo l’utilizzo di una vista, così da rendere la nostra applicazione completamente rispondente agli standard del pattern MVC. Il file modello.php rimane invariato, ciò che dobbiamo cambiare è il controller. Al suo interno mettiamo tutti i dati recuperati dal modello tramite il metodo get_dati() dentro l’array multidimensionale $elenco_libri che poi passiamo alla vista nel momento in cui la carichiamo dandogli come nome ‘elenco’:

Infine ecco il file vista.php:

Lascia un commento

Your email address will not be published.