Ogni operazione eseguita sul Web coinvolge un client ed un server. Un client è un dispositivo (ad esempio un browser) che effettua una richiesta ad un server remoto. Il server remoto attraverso un linguaggio di scripting (come per esempio PHP) interpreta la richiesta del client ed invia una risposta (ad esempio una pagina HTML, un oggetto JSON o un XML) al client. A questo punto il client è in grado di interpretare, a sua volta, la risposta ricevuta e fornirla all'utente; nel caso del browser riceverà una pagina HTML che mostrerà all'utente.
PHP è un linguaggio per lo scripting server-side, ovvero un linguaggio che risiede in un server in remoto e che in fase di esecuzione interpreta le informazioni ricevute da un client grazie al Web server, le elabora e restituisce un risultato al client che ha formulato la richiesta.
Supponiamo ad esempio di accedere ad una pagina di un sito Web in cui effettuare il login. Dal nostro browser all'interno di una pagina (ad esempio www.nomesito.com/login
) inseriremo le nostre credenziali per l'autenticazione. Semplificando il più possibile, le azioni che vengono compiute saranno le seguenti:
- il browser effettua una richiesta con le credenziali al server remoto tramite il protocollo HTTP;
- il Web server riceve la richiesta e la interpreta verificando che i dati inviati siano corretti;
- il web server restituisce una risposta al client che potrà essere diversa a seconda del fatto che la risorsa richiesta sia disponibile o meno.
Quello di cui si occupa PHP è appunto elaborare i dati veicolati tramite una richiesta HTTP e fornire un'adeguata risposta al client. Nel nostro caso il linguaggio avrà il compito di verificare che i dati di login siano corretti e restituire una risposta diversa a seconda della validità delle informazioni ricevute; tale meccanismo viene rappresentato dalla figura seguente (fonte).
PHP si differenzia poi dai linguaggi di scripting client side, come per esempio JavaScript, per via del fatto che il sorgente viene eseguito nel server, generando markup HTML da inviare al client; quest'ultimo riceverà i risultati dell'esecuzione di un'applicazione ma il codice eseguito non sarà mai visibile.
Storia
PHP nasce nel 1994 dalla tastiera di Rasmus Lerdorf; inizialmente esso veniva presentato come una serie di Common Gateway Interface (CGI) binari scritti in C per tracciare il numero di visite all'interno della suo homepage personale. Da qui il primo nome del PHP: Personal Home Page. In seguito però verrà rinominato in Hypertext Preprocessor.
Il progetto venne ripreso successivamente da Rasmus, riscritto e rilasciato integrando alcune funzionalità. A questo punto il linguaggio era diventato abbastanza noto presso la community Open Source, al punto che nel 1998 venne rilasciata la versione 3 che, alla fine dello stesso anno, coprirà circa il 10% dei server presenti in Rete. Nel 2000 verrà rilasciata la versione 4, fino ad arrivare alla prima release della versione corrente (5.x) nel luglio del 2004.
Secondo gli ultimi aggiornamenti di w3techs, PHP risulta utilizzato nell'82% dei siti Web a livello mondiale, seguito dall'ASP con solo il 17%. È di gran lunga il linguaggio server-side più usato e deve gran parte del suo successo alla sintassi molto simile al C e alla sua facilità di apprendimento.
Caratteristiche e vantaggi del PHP
Come detto nel paragrafo precedente, il PHP appartiene alla famiglia dei linguaggi C-Like, ovvero quei linguaggi la cui sintassi è molto simile a quella del C. Vediamo nella seguente tabella alcune differenze e similitudini tra quest'ultimo e PHP, i punti elencati verranno poi approfonditi nel corso delle trattazione.
Linguaggio C | Linguaggio PHP |
---|---|
Tipizzazioni molto forte | Tipizzazione debole |
Paradigmi supportati: imperativo, procedurale, strutturato | Paradigmi supportati: imperativo, funzionale, object-oriented, procedurale, riflessivo |
Supporta i puntatori | Non supporta i puntatori |
Utilizzato principalmente per software Desktop | Utilizzato principalmente per applicativi Web |
Operazioni con le stringhe particolarmente complicate | Operazioni con le stringhe molto semplici da effettuare |
Non supporta I/O filesafe | Supporta I/O filesafe |
Non supporta system calls | Supporta system calls |
Tipi di dati numerici supportati: int8_t, unint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, int, unsigned int, signed char, unsigned char, short, unsigned short, long, unsigned long, long long, unsigned long long | Tipi di dati numerici supportati: 32-bit signed int, 64-bit signed int (long integer) |
Tipi di dati float supportati: single precision float, doublelong double | Tipi di dati float supportati: double precision float |
Supporta array di dimensioni fisse | Non supporta array di dimensioni fisse |
Non supporta array associativi | Supporta array associativi |
Il PHP è stato sviluppato principalmente per il Web, questo implica che la maggior parte delle sue caratteristiche sono state implementate in funzione di esso. Il linguaggio, ad esempio, consente di accedere in maniera semplicissima alle richieste HTTP di tipo GET e POST.
La specifica HTTP definisce 9 tipi di metodi alcuni dei quali non sono però usati o supportati dal PHP; i più diffusi restano sicuramente i già citati GET e POST. GET è il metodo con cui vengono richieste la maggior parte delle informazioni ad un Web server, tali richieste vengono veicolate tramite query string, cioè la parte di un URL che contiene dei parametri da passare in input ad un'applicazione (ad esempio www.miosito.com/pagina-richiesta?id=123&page=3
). Il metodo POST, invece, consente di inviare dati ad un server senza mostrarli in query string, è ad esempio il caso delle form.
Un'altra caratteristica importante è l'accesso in lettura/scrittura ai cookie del browser e il supporto alle sessioni sul server. I cookie sono delle righe di testo usate per tenere traccia di informazioni relative ad un sito Web sul client dell'utente. Le sessioni sono utilizzate anch'esse per memorizzare informazioni relative all'utente, ma vengono salvate sul server e non sul client; esse vengono utilizzate, ad esempio, per gestire l'accesso a contenuti riservati da parte di utenti registrati. Questi argomenti verranno trattati in dettaglio nella sezione dedicata ai dati e alla sicurezza.
PHP fornisce delle librerie per accedere alla maggior parte dei database (MySQL, Postgres, SQLite..), per interagire con i server Web (Apache..), per manipolare le immagini (GD), per effettuare connessioni remote (cUrl) e molto molto altro, inoltre, anche se nato come linguaggio per Web, potrà essere utilizzato come linguaggio per lo scripting da riga di comando.
Uno dei punti di forza del PHP è la community molto attiva. Sono migliaia le librerie di terze parti che ampliano le funzionalità di base e, nella maggior parte dei casi, sono tutte rilasciate con licenza Open Source. Numerosissimi anche i framework sviluppati con questo linguaggio (Zend Framework, Symfony Framework, CakePHP..) così come anche i CMS (WordPress, Drupal, Joomla..).
PHP è multipiattaforma, cioè può essere utilizzato sia in ambienti unix-based (Linux, Mac OSX) che su Windows. La combinazione più utilizzata, però, resta quella LAMP ovvero Linux come sistema operativo, Apache come Web server, MySQL per i database e PHP.
Perché imparare PHP
Perché seguire questa guida? Perché è importante conoscere il PHP? Perché è il linguaggio di scripting lato server più utilizzato al Mondo e la richiesta di sviluppatori dotati di questa competenza è ancora in crescita, perché la curva di apprendimento rispetto ad altri linguaggi è molto meno ripida e sarà possibile divenire operativi in tempi più brevi, infine, fattore non secondario, perché PHP è Open Source.