venerdì 19 ottobre 2012

Guida Codeigniter 1 - Introduzione

Perché CodeIgniter

Arriva un momento, nel percorso lavorativo di un programmatore Php, nel quale si avverte la mancanza di un sostegno che possa semplificare la creazione e la gestione di progetti complessi.
Questa sensazione porta alla ricerca dei cosiddetti framework, ossia particolari strumenti che permettono di velocizzare determinate operazioni di uno sviluppatore, aiutandolo anche (nei limiti del possibile) ad evitare gli errori più comuni durante la progettazione e la stesura del codice. I framework contengono metodi e funzioni in risposta ai problemi più comuni; permettono di interagire facilmente con vari tipi di database e supportano una caratteristica importante, la scalabilità.
Codeigniter è un framework, perfetto a mio modo di vedere, per chi ha il bisogno di avere il pieno controllo del proprio codice Php e necessita però di scorciatoie per le operazioni più comuni. Vediamo qualche caratteristica di Codeigniter così come vengono pubblicizzate sul sito del progetto:
  • leggerezza - possiede senza dubbio un core di piccole dimensioni, ma in grado di fare grandi cose;
  • ottime prestazioni;
  • ampia compatibilità con i vari servizi di hosting, a prescindere dalle versioni (dalla 5.1.6 in avanti) e configurazioni del motore Php;
  • già funzionante senza configurazioni - appena scaricato il framework non necessita di configurazioni particolari, a meno ovviamente delle impostazioni del database;
  • non necessita di essere eseguito da linea di comando (al contrario di simphony);
  • non necessita che lo sviluppatore impari un linguaggio di templating (ne supporta uno ma è assolutamente opzionale);
  • ha una ottima documentazione - e migliaia di risposte già pronte in caso di problemi.
A queste caratteristiche, che dovrebbero convincere un programmatore php ad adottare Codeigniter, aggiungo le funzionalità che possiede, per me fondamentali per comprenderne appieno le potenzialità:
  • pieno supporto di MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC;
  • interazione diretta con i database o mediante quello che viene chiamato Active Record;
  • costringe a sviluppare seguendo il pattern MVC, il quale a mio avviso aiuta sia durante la progettazione che durante eventuali modifiche al software;
  • genera URL facilmente leggibili dai motori di ricerca (SEO friendly), ad esempio
    http://www.example.com/news/view/12
  • è facilmente personalizzabile ampliandone le potenzialità;
  • supporta un sistema di internazionalizzazione (multilingua). 

Flusso di funzionamento


Quello che uno sviluppatore, abituato a interagire con i files php atti ad una determinata funzione (ad esempio news.php, contact.php ecc) deve capire è la centralità del file index.php, vero e proprio “vigile urbano” di un progetto codeigniter. Non esistono altre pagine all’infuori di index.php nella root principale, ma come si vedrà successivamente tutte le pagine necessarie saranno “controllori” (application controller) seguendo il pattern MVC. Dopo questa precisazione risulta più comprensibile il flusso di funzionamento mostrato in figura:
  1. La pagina index.php è quella principale, fulcro del sistema, che inizializza le risorse utilizzate da CodeIgniter
  2. Una funzionalità di routing (personalizzabile e modificabile) analizza la richiesta HTTP per determinare il comportamento che il sistema deve adottare.
  3. Se un sistema di caching è abilitato e viene trovato il file richiesto in cache, allora si evita la normale esecuzione del file velocizzando il sistema.
  4. La richiesta HTTP è filtrata per evitare problemi di sicurezza, prima che qualsiasi application controller sia eseguito.
  5. Il Controller carica i modelli, le librerie del core principale, e tutte le risorse necessarie a processare la specifica richiesta. Nel controller risiede, per farla breve, la funzionalità che il programmatore vuole implementare.
  6. Viene caricata (dal controller) la Vista, ossia il codice HTML che deve essere mostrato nel browser dell’utente finale. Se il caching è abilitato, la pagina viene salvata in cache per un eventuale richiesta futura. 

Il pattern Model View Controller

Il pattern MVC viene utilizzato sempre più frequentemente e il suo principale vantaggio, applicato al php, è quello di separare l’interazione coi i dati e l’interfaccia grafica. Vediamo nel dettaglio:
  • il model fornisce i metodi per interagire con i dati utili all’applicazione;
  • il view visualizza i dati contenuti nel model: normalmente è una pagina web in html;
  • il controller è l’intermediario tra le due entità precedenti e racchiude l’elaborazione dei dati (ossia una volta ottenuti i dati con il Model, li elabora e li passa al View).

Installazione e configurazione

Come menzionato in precedenza, l’installazione e la configurazione di questo framework sono operazioni molto semplici e veloci. Dopo averne scaricato l’ultima versione disponibile dal sito codeigniter, si scompatta l’archivio nella cartella del web server preposta allo scopo, ad esempio la directory root, htdocs per Apache.
Per la configurazione è sufficiente aprire il file
application/config/config.php
ed impostare la variabile di configurazione base_url con l’Url base della vostra applicazione web, ad esempio: ,
$config['base_url']='http://localhost/';
Da notare il fatto che se viene lasciata vuota, CodeIgniter tenterà di comprendere questo parametro da solo (spesso funziona anche se lasciato vuoto).
Basterà aprire a questo punto tramite un browser l’indirizzo specificato come Url base e il sistema vi darà il benvenuto:

Un’occhiata alla struttura

Di base, CodeIgniter ha tre cartelle principali:
application
che conterrà tutto ciò che lo sviluppatore deve implementare (controllori, modelli, viste, librerie di terze parti eccetera); di tutte le sue sottocartelle, per il momento suggerisco di notare le cartelle fondamentali, ossia config, controllers, models e views.
system
che contiene il cuore del framework.
user_guide
che può essere eliminata poiché contiene la versione offline della documentazione.
Consiglio di creare una terza cartella, chiamata assets, che conterrà gli script Javascript, i fogli di stile CSS e le immagini di cui l’applicazione avrà bisogno.


Seconda parte della guida: Guida Codeigniter 2 - Primi passi
Terza parte della guida: Guida Codeigniter 3 - Uso avanzato
Quarta parte della guida: Guida Codeigniter 4 - Gestione del multilingua

EDIT:
Ho pubblicato la guida in formato PDF contenente tutti gli argomenti affrontati sul blog, liberamente scaricabile e stampabile. La trovate al link:
http://stefanobianchini.blogspot.it/2012/11/guida-codeigniter-modo-mio-pdf-in.html

1 commento:

Anonimo ha detto...

Confermo