Linguaggio fondamentale nello sviluppo e creazione dei siti web moderni è sicuramente il PHP. Il PHP, oggi Hypertext Preprocessor (preprocessore degli ipertesi), ma in origine acronimo di “Personal Home Page”, è un linguaggio di scripting interpretato. Attualmente è principalmente utilizzato per sviluppare applicazioni web lato server, ma può essere usato anche per scrivere script a riga di comando o applicazioni stand-alone con interfaccia grafica. Grazie soprattutto alla diffusione di Wordpress (CMS scritto in PHP), secondo le statistiche, è il linguaggio lato server più usato al mondo.
PHP: le origini
Lo sviluppo di questo linguaggio di programmazione ebbe inizio nel 1994, quando Rasmus Lerdorf era alle prese con la creazione di script Common Gateway Interface (“Interfaccia comune per gateway” in italiano) in Perl da utilizzare per gli aggiornamenti periodici del suo sito web. Questi piccoli tool svolgevano compiti tutto sommato semplici e ripetitivi come mostrare il suo curriculum vitae e registrare il numero di visitatori alla sua pagina personale.
Successivamente Lerdorf decise di riscrivere da capo gli script, utilizzando il linguaggio C anziché Perl. Questo per due motivi principali: prima di tutto per migliorare le prestazioni degli script e, in secondo luogo, per estendere le loro capacità sino a renderli in grado di interagire con altri form web presenti nel sito e comunicare con i vari database legati alle sue pagine. Per questo motivo lo sviluppatore canadese decise di chiamare questo nuovo linguaggio – nato dall’ibridazione di C con Perl – Personal Home Page/Forms Interpreter o PHP/FI.
Con questa configurazione, il PHP/FI poteva essere utilizzato per sviluppare piccolissime applicazioni web dinamiche. La prima release pubblica del linguaggio – chiamata “Personal Home Page Tools (PHP Tools) version 1.0” – servì a Lerdorf per scoprire bug eventualmente sfuggiti al suo occhio e migliorarne sintassi e semantica. Venne rilasciata l’8 giugno 1995, dopo quasi dodici mesi di lavoro serrato.
Inizialmente il PHP non era pensato – né tantomeno realizzato – per essere un linguaggio di programmazione a sé stante. Con il passare del tempo, e al crescere della comunità di sviluppatori web che lo utilizzava, si decise di dare una sistematizzazione al corpus di funzioni e script realizzati. Da questo lavoro nacque la seconda release di PHP/FI, lanciata nel novembre 1997.
Caratteristiche
È un linguaggio a tipizzazione debole e dalla versione 5 migliora il supporto al paradigma di programmazione ad oggetti. Certi costrutti derivati dal C, come gli operatori fra bit e la gestione di stringhe come array, permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente un linguaggio di alto livello, caratteristica questa rafforzata dall’esistenza delle sue oltre 3.000 funzioni API del nucleo base.
PHP è in grado di interfacciarsi a innumerevoli Database tra cui MySQL, PostgreSQL, MariaDB, Oracle, Firebird, IBM DB2, Microsoft SQL Server e anche basi di dati NoSql come MongoDB. Supporta numerose tecnologie come XML, SOAP, IMAP, FTP, CORBA. Si integra anche con altri linguaggi/piattaforme quali Java e .NET ed esiste un wrapper per tutte le librerie più diffuse come CURL, GD, Gettext, GMP, Ming, OpenSSL ed altro.
Fornisce un’API specifica per interagire con Apache, sebbene funzioni naturalmente con numerosi altri server web. È ben integrato senza l’uso di componenti esterni con il database MySQL/MariaDB per il quale possiede più di una API (mysql, mysqli, PDO). A partire della versione 5, integra al suo interno una piccola base di dati embedded, SQLite. Per questi motivi esiste un’enorme quantità di script e librerie in PHP disponibili liberamente su Internet.
Dispone di un archivio chiamato PEAR che mette a disposizione un framework di librerie riusabili per lo sviluppo di applicazioni PHP e di PECL che raccoglie tutte le estensioni conosciute scritte in C.
PHP non ha ancora un supporto nativo per le stringhe Unicode o multibyte; il supporto Unicode è in fase di sviluppo per una futura versione di PHP e consentirà di usare caratteri non ASCII in stringhe e nomi di funzioni, classi e metodi.
La sintassi e alcuni esempi di codice sono rimandati ad altri approfondimenti che verrano introdotti in futuro.