PHPIn questo articolo vogliamo valutare quali possano essere gli strumenti migliori da utilizzare per sviluppare applicativi con il linguaggio PHP.
Dalla versione 3 il linguaggio, anche se lentamente, si è evoluto, ma spesso molti programmatori continuano ad utilizzarlo senza sfruttare al meglio tutte le possibilità.
E' importante utilizzare l'ultima versione del linguaggio, perché mette finalmente a disposizione molti strumenti utili per la programmazione a oggetti.
Scrivere il codice utilizzando classi e metodi, vi obbliga ad essere più ordinati e facilita il riutilizzo del codice.
Per eseguire i collegamenti al database è consigliabile utilizzare un'interfaccia comune per tutti i tipi di database, come quella fornita da PDO (PHP Data Objects). In questo modo se doveste in futuro cambiare la base dati, non dovrete modificare quasi nulla nel codice.
E' utile installare PEAR, il "repository" ufficiale di classi Php.
Dalla versione PHP 5.3 vengono introdotte importanti caratteristiche come i namespaces (utili per gestire grossi progetti che utilizzano diverse librerie) e il late static binding.
Eclipse Pdt (PHP Development Tools) è un editor che permette di scrivere il codice PHP, utilizzando numerosi tool che vi facilitano la programmazione. Parliamo di autocomletamento, di segnalazione degli errori, di strumenti per cercare all'interno del progetto, ecc. ecc.
Il programma ormai giunto alla versione 2.0 ha funzionalità estremamente utili ed è sicuramente consigliato.
Ecco alcune plugin non installate di default:
Dalla versione 6.5 di NetBeans l'IDE della Sun scritto in Java supporta il linguaggio PHP, ed è diretto concorrente di Eclipse, in quanto ha caratteristiche simili e confrontabili.
L'ultimo IDE che vogliamo segnalare è Komodo. Disponibile in due versioni, una free chiamata "Komodo Edit" e una a pagamento con caratteristiche aggiuntive chiamata "Komodo IDE".
La caratteristica di maggiore interesse è che è realizzato con le API di Mozilla, quindi XUL, XBL e XPCOM.
Questo fa si che Komodo sia utilizzabile su tutte le piattaforme e risenta di meno della lentezza fornita dal Java che ha Eclipse.
MySql da sempre è il database più utilizzato dagli sviluppatori di PHP, perchè open, gratuito, veloce e con le ultime versioni anche potente.
Non per niente LAMP è la piattaforma per lo sviluppo di applicativi web, più utilizzata a livello mondiale. LAMP infatti sta per Linux, Apache, MySQL, PHP.
Nel gennaio del 2008 MySQL AB, la società che sviluppa il database, è stata acquistata, per 1 Miliardo di dollari, da Sun. Chissà se questo fatto modificherà i "rapporti" con il PHP...
XDebug è una estensione per PHP che permette di utilizzare funzionalità di debugging, tracing e profiling. XDebug è supportato anche da Eclipse, per cui lo si può anche utilizzare tramite questo tool visuale, con i tasti appositi. E' possibile eseguire il programma avanzando istruzione per istruzione, entrare o meno dentro una funzione o metodo, vedere la valorizzazione delle variabili passo passo, in modo da trovare più semplicemente un problema di funzionamento dello script.
La parte di profiling invece, genere dei file log sulle performance relative al codice eseguito (tempo di esecuzione di un file, di una funzione / metodo, numero di chiamate, ecc.). Nel caso il vostro codice avesse bisogno di ottimizzazioni, questo file vi dice in modo chiaro da dove iniziare. Per visualizzare in modo molto efficace questi log (che sono salvati nel formato standard Cachegring), per Linux esiste un programma che sfrutta le librerie di Kde, chiamato KcacheGring.
Smarty è una classe PHP che permette di separare la logica e il contenuto dell'applicazione, dalla sua presentazione.
Facilita l'implementazione del famoso pattern MVC (Model View Controller).
In questo modo la persona che segue la grafica avrà una pagina più pulita su cui lavorare e lo stesso per il codice PHP.
Per utilizzare Smarty è necessario imparare il linguaggio associato, ma la curva di apprendimento è piuttosto rapida e i vantaggi sono indiscutibili, in particolar modo per i grossi progetti, che risultano più ordinati e mantenibili.
Esiste un manuale in italiano e un forum multilingua tra cui c'è anche l'italiano.
Smarty 2.x è compatibile con PHP4 ma è decisamente obsoleto. Per fortuna Smarty 3.x è completamente a oggetti e studiato esclusivamente per PHP5 e versioni successive.
Twig è una libreria simile a Smarty, utilizzata dal framework Symfony e probabilmente ad oggi è una delle scelte migliori.
Doctrine è un PHP ORM (object relational mapper) utilizzabile con PHP 5.2.3 o superiore
. Permette di accedere al database scrivendo le query in OO (object oriented, cioè orientato agli oggetti) tramite metodi, oggetti e un linguaggio chiamato DQL. E' un concetto simile a quello di Hibernates HQL disponibile per il linguaggio Java.
PHP Unit è un framework per automatizzare il testing del codice PHP. Quando si sviluppano degli applicativi di grosse dimensioni è importante testare le funzionalità in modo automatico, altrimenti una modifica ad una classe od un refactoring potrebbero generare degli effetti imprevisti, senza che noi ce ne possiamo rendere conto.
Per creare i test, si estende la classe che mette a disposizione PHPUnit, PHPUnit_Framework_TestCase e si creano i propri metodi di test dei singoli componenti o funzioni.
E' possibile anche fare test sui database (estendendo PHPUnit_Extensions_Database_TestCase), sull'interfaccia grafica (utilizzando Selenium) e su altre funzionalità specifiche.
phpDocumentor 2 è una soluzione completa per creare in modo automatico la documentazione di un progetto PHP utilizzando i commenti inseriti nel codice in un certo formato. phpDocumentor fornisce la descrizione della sintassi e dei tag da seguire per i commenti all'interno del codice php. Inoltre mette a discposizione un programma che estrapola i commenti e genera la documentazione in formato HTML, PDF, Windows Helpfile CHM, o Docbook XML.
I tag per i commenti di base sono molto semplici, ad esempio scrivendo un commento così
/**
* Commento per documentazione
*/
significa che vogliamo inserirlo nella documentazione, mentre senza il doppio asterisco all'inizi
/*
* Commento normale
*/
significa che il commento deve essere visibile solo nel codice ma non nella documentazione. All'interno di questi commenti si possono inserire tag per definire l'autore, la versione, il namespace, ecc.
phpDocumentor ha un suo programma per generare la documentazione PHP, ma utilizzando Doxygen, imparate un programma che è praticamente utilizzabile con ogni linguaggio (C++, C, Java, Objective-C, Python, IDL, Fortran, VHDL, C#). Naturalmente per il PHP utilizza la sintassi dei commenti, descritta in phpDocumentor.
Una volta installato, la configurazione con il sistema operativo Linux, è molto semplice.
Andate nella cartella principale dove c'è il vostro applicativo PHP e digitate
doxygen -g
Questo comando genererà un file di configurazione standard, che potrete editare con;
vi Doxyfile
In questo file potete modificare alcune opzioni, ad esempio:
OUTPUT_LANGUAGE = NomeProgetto
OUTPUT_LANGUAGE = Italian
OUTPUT_DIRECTORY = doc
RECURSIVE = YES
EXCLUDE =
"Output direcotry" indica la cartella dove si vuole che venga creata la documentazione. Con "recursive = yes" si fa cercare (per la creazione della documentazione), anche nelle sottocartelle del progetto. Tramite "exclude" si possono fare escudere alcune cartelle particolari, che non si vuole vengano esaminate.
Una volta salvate queste poche modifiche alla configurazione base, basta lanciare il comando:
doxygen
che la documentazione viene creata, nel nostro esempio all'interno della cartella "doc".
Per visualizzare la documentazione con il browser basterà mettere:
http://indirizzoSito/doc/html/
PHP_CodeSniffer analizza il codice PHP e rivela le violazioni ad un definito set di standard di programmazione. A cosa serve? E' un importante tool che vi aiuta a tenere pulito e consistente il vostro codice
phpUnderControl è un applicativo per gestire il tool continuous integration CruiseControl. Il termine continuous integration è legato alla metodologia Agile e spesso all'Extreme Programming. Uno dei benefici maggiori che può fornire questo approccio è l'automatizzazione dei processi di build e di test, cosa fondamentale se devono essere fatti più volte al giorno in un ambiente di lavoro in team.
La sezione "Tests" permette di vedere in un modo graficamente piacevole i tests generati con PHP unit.
La sezione "Metrics" mostra una serie di grafici che mostrano le variazioni con il susseguirsi delle versioni
La sezione "Coverage" mostra una serie di grafici a barre che indicano la percentuale del codice che viene coperto tramite i test.
La sezione "Documentation" mostra la documentazione del progetto, estrapolata tramite PHP doc.
La sezione "CodeSniffer" mostra un elenco degli errori e dei warning rilevati dal tool CodeSniffer.
HTML Purifier è un filtro scritto in PHP 5, indispensabile per qualunque sito che permette l'inserimento di codice HTML da parte dell'utente, tramite un form.
L'utilizzo di HTML Purifier permette di filtrare il testo eliminando i tag non consentiti, eliminando il codice javaScript, il codice malevolo (XSS), assicurarsi che il codice immesso sia "standards compliant", inserire una whitelist di tag consentiti, correggere errori HTML come la mancata chiusura di alcuni tag.
Sub Version è un sistema di controllo versione, che va a sostituire il CVS, il primo sistema di questo dipo che si è diffuso in larga scala e che ormai risente dei suoi anni.
Tramite questo sistema è possibile gestire le varie versioni di un programma, tenendo memoria di ogni fase del progetto e potendo tornare in un qualunque momento in una delle "fotografie" precedenti. Inoltre gestisce anche lo sviluppo in team di un progetto, aiutando a risolvere i conflitti.
Subversion è costutuito da una parte server che gestisce i file e da una parte client che permette di inviare i file (commit) e di scaricarli (update). Tra i client più validi per windows citiamo TortoiseSVN, che si integra completamente con l'esplora risorse aggiungendo voci e menu contestuali sui file e cartelle. Esistono anche client per Eclipse, ad esempio Subclipse.
Di SubVersion esiste anche un libro gratuito in italiano.
GIT è la terza grande evoluzioni di questo tipo di sistemi ed è ormai uno standard.
Firebug è una estensione del browser Mozilla Firefox, ed è fondamentale per chiunque faccia pagine web! Permette di ispezionare e fare debug di CSS, HTML, e JavaScript. Una estensione tanto piccola, quanto utile che rivoluziona il modo di fare debug con l'html.
Prima di questa estensione il programma simile più diffuso era Web Developer, che comunque avendo varie funzionalità non presenti o sfruttabili diversamente e non andando in conflitto con Firebug può valere la pena installare.
Dojo è un insieme di librerie in JavaScript che vi permettono di lavorare più agevolmente con i cosiddetti componenti del web 2.0, come Ajax e l'html dinamico.
Gli svilupaptori di Dojo hanno reimplementato molti componenti, come quelli dei form (select, text box, ecc) aggiungendo nuove funzionalità sia a livello di interfaccia utente, sia a livello di programmazione, come la validazione, ecc. Inoltre hanno implementato nuovi componenti non presenti nativamente in HTML, come il calendario e altri widget utili. Altre librerie riguardano il layout, con container, tab e facilitazioni per il loro posizionamento all'interno della pagina. DojoX infine, raccoglie una serie di componenti più sperimentali.
Quasi tutte le funzionalità di Dojo si possono creare utilizzando dei tag in stile HTML, oppure con righe di codice scritto in JavaScript. Nel primo caso non sarà possibile validare correttamente la pagina tramite il W3C, perchè naturalmente i tag di Dojo non vengono riconosciuti.
jQuery è ormai la libreria javaScript più diffusa. Ha moltissimi plugin, tra i quali il più conosciuto è jQuery UI.
Zend Framework è il framework open source sponsorizzato da Zend, i creatori del PHP. Dalla versione 1.5 raggiunge un livello adeguato a farlo diventare uno dei più interessanti framework disponibili.
Tra le sue caratteristiche principali troviamo l'implementazione del design pattern MVC, l'internazionalizzazione (i18n), i moduli per l'autenticazione, i web services, generazione di PDF, emails, ecc.
Inoltre, grazie ad un accordo con Dojo Toolkit verrà proposta una soluzione integrata di Dojo nel framework PHP. Questa è una sinergia molto interessante, che speriamo darà i suoi frutti entro breve.
Tralasciamo di parlare di Cake PHP, che è il diretto discendente (clone) di Ruby on Rails, perchè al momento è sviluppato in PHP4 e quindi non sfrutta al meglio i costrutti a oggetti resi disponibili dal PHP5.
Il framework che per molti versi cerca di migliorare i concetti di RoR è Symfony.
Symfony permette di creare e mantenere applicativi web, aiutando nei compiti ripetitivi e soprattutto cercando di non farvi reinventare la ruota ad ogni progetto.
Ha integrati dei tool per il test, il debug e la documentazione. Ha moduli per la gestione di pagine ajax, l'integrazione con gli ORM Doctrine e Propel, il supporto al design pattern MVC e molte altre caratteristiche.
Esistono vari framework che utilizzano le caratteristiche di PHP 5.3
I più interessanti sono: Zend Framework 2, Symfony2, Lithium. Zend Framework 2 e Symfony2 sono le evoluzioni delle versioni 1.x, mentre Lithium è programmato da alcuni sviluppatori di CakePHP.
Al momento attuale il framework più maturo è Symfony2.
Packagist è un gestore di pacchetti per PHP. Basta scrivere nel file compser.json i pacchetti che ci servono, lanciare php composer.phar install e il programma penserà a scaricare i file, le dipendenze e a creare un file che fa l'autoload delle dipendenze.
PSR-0 indica le direttive necessarie per l'interoperabilità dell'autoloader
PSR-1 indica gli standard di base nella scrittura del codice PHP.
PSR-2 è una guida allo stile del codice PHP.