PHP 7
Linguaggio di programmazione
E' importante utilizzare l'ultima versione del linguaggio, perché migliora costantemente il supporto 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.
Un grandissimo miglioramento per l'ecosistema PHP è stato portato da Composer, un sistema di dipendenze che vi permette di installare librerie comprensive di dipendenze in pochi istanti.
Eclipse Pdt
Ambiente di sviluppo integrato (IDE) multilinguaggio e multipiattaforma
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 5.2 ha funzionalità estremamente utili ed è sicuramente consigliato.
Ecco alcune plugin non installate di default:
- Mylyn è utile per i progetti con molti file. Permette di creare dei task, a cui si dà il nome ad esempio delle funzionalità principali. Se quando si modificano queste funzionalità, si seleziona il tag apposito, il programma impara i file che vi servono per il task e vi fa vedere solo quelli. Naturalmente è possibile, tramite un tastino togliere file che sono entrati per sbaglio nel task e con un tastino tornare alla visualizzazione globale.
NetBeans
Ambiente di sviluppo integrato (IDE) multilinguaggio e multipiattaforma
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'ultima versione è la 9
Komodo IDE
Ambiente di sviluppo integrato (IDE) multilinguaggio e multipiattaforma
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.
Atom
Se Eclopse e Netbeans sono troppo pesanti per voi, Atom sviluppato dal team di github, potrebbe fare al caso vostro. Potente e leggero
MySql
Database relazionale
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.
Vi consiglio di utilizzare MariaDb, in pratica il MySql portato avanti dal suo ideatore.
XDebug
Estensione PECL
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
Template engine
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
Template engine
Twig è una libreria simile a Smarty, utilizzata dal framework Symfony e probabilmente ad oggi è la scelta migliore.
Doctrine
Classe PHP
Doctrine è un PHP ORM (object relational mapper).
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
Classe PHP
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
Specifiche tecniche per auto-documentazione + programma PHP di creazione
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.
Doxygen
Applicativo multipiattaforma
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
Classe PHP installabile con PEAR
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
Applicativo con motore java e frontend PHP
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
Classe PHP
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.
GIT
Sistema di controllo versione
GIT è un sistema di controllo versione creato da Linus Torvalds (l'ideatore di Linux) nel 2005. Ad oggi è lo standard de facto.
E' possibile utlizzare git anche in un pc locale senza connessione internet, ma se volete un backup del codice in remoto, oppure sviluppate con un team di persone, esistono dei siti web appositi. I più famosi sono github e BitBucket.
jQuery
Libreria JavaScript
jQuery è ormai la libreria javaScript più diffusa. Ha moltissimi plugin, tra i quali il più conosciuto è jQuery UI.
Alternative sono Angular (un framework sviluppato da Google) e React (un framework sviluppato da Facebook).
Zend Framework
Framework
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.
Symfony
Framework
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.
Packagist
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.
Standard PHP
PSR-4 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.
Potete anche visionare una pagina con tutti i PSR.