# PHP/Programmazione

PHP
Copertina Tutti i moduli · Sviluppo
    CopertinaPHP/Copertina
* IntroduzionePHP/Introduzione
** StoriaPHP/Introduzione/Storia
** Come funzionaPHP/Introduzione/Come funziona
* Installazione e configurazionePHP/Installazione e configurazione
** InstallazionePHP/Installazione
*** LinuxPHP/Installazione/Linux
*** WindowsPHP/Installazione/Windows
*** Mac OS XPHP/Installazione/Mac OS X
** ConfigurazionePHP/Configurazione
* ProgrammazionePHP/Programmazione
** CommentiPHP/Programmazione/Commenti
** VariabiliPHP/Programmazione/Variabili
** OperatoriPHP/Programmazione/Operatori
** ArrayPHP/Programmazione/Array
** CondizioniPHP/Programmazione/Condizioni
** CicliPHP/Programmazione/Cicli
** Funzioni di basePHP/Programmazione/Funzioni di base
** Funzioni personalizzatePHP/Programmazione/Funzioni personalizzate
** Variabili globaliPHP/Programmazione/Variabili globali
*** $GLOBALSPHP/Programmazione/Variabili globali/$GLOBALS
*** $_GETPHP/Programmazione/Variabili globali/$_GET
*** $_POSTPHP/Programmazione/Variabili globali/$_POST
*** $_SESSIONPHP/Programmazione/Variabili globali/$_SESSION
*** $_COOKIEPHP/Programmazione/Variabili globali/$_COOKIE
*** $_SERVERPHP/Programmazione/Variabili globali/$_SERVER
** FilePHP/Programmazione/File
** ImmaginiPHP/Programmazione/Immagini
** Espressioni regolariPHP/Programmazione/Regexp
** Programmazione orientata agli oggettiPHP/Programmazione/OOP
* Programmazione avanzata con le classi PEARPHP/PEAR
* PHP e i databasePHP/Database
** Funzioni PHP per l'accesso ai database
*** Funzioni MySQLPHP/Programmazione/MySQL
**** Accesso al databasePHP/Programmazione/MySQL/Accesso al database
**** QueryPHP/Programmazione/MySQL/Query
**** Risultati di una queryPHP/Programmazione/MySQL/Risultati di una query
**** Liberare memoria dai risultati di una queryPHP/Programmazione/MySQL/Liberare memoria dai risultati di una query
**** Chiudi connessione al dbPHP/Programmazione/MySQL/Chiudi connessione al db
*** Funzioni PostgreSQLPHP/PostgreSQL
**** Accesso al database
**** Query
**** Risultati di una query
*** Funzioni Sqlite
**** Accesso al database
**** Query
**** Risultati di una query
** Database e object oriented
*** Abstraction Layers
**** PDO - Php Data Objects
**** PEAR::MDB2
**** Creole
*** Object Relational Mapping (ORM)
**** PEAR:DB_DataObject
**** PEAR:DB_Table
**** Propel
* PHP Design PatternPHP/PHP Design Pattern
* SmartyPHP/Smarty
* Sicurezza delle applicazioni web
* PHP CLI: Command Line InterpreterPHP/Cli
* PHP GTK2: applicazioni desktop in PHPPHP/Gtk
* Crediti
Modifica il sommario
Analizzeremo ora i fondamenti del linguaggio, partendo dalle nozioni di base fino a descrivere tutte le caratteristiche fondamentali (alcune delle quali saranno trattate approfonditamente in seguito).
Ogni file viene interpretato dal motore di PHP scorrendo le istruzioni nell'ordine in cui sono scritte, dal basso verso l'alto. Non è necessario compilarli, come ad esempio in C. Ad ogni richiesta giunta al webserver (input) viene chiamato l'interprete PHP, il quale processerà il file oggetto della richiesta e restituirà un output. Nella maggior parte dei casi la richiesta proviene da un browser e l'output sarà in formato HTML.
Per poter essere eseguiti dall'interprete, i file PHP devono trovarsi in una cartella a cui il webserver abbia accesso, denominata root directory, e devono avere estensione .php (a meno di configurazioni particolari, che qui saranno ignorate).

## PHP e HTML insieme

Il codice PHP può coesistere all'interno dello stesso file insieme al linguaggio HTML. Sebbene non sia una buona pratica, nella prima parte di questo libro gli esempi potranno contenere entrambi i linguaggi per una più facile comprensione. In seguito si esamineranno soluzioni migliori per scrivere il codice che faccia parte della "logica applicativa" quanto più possibile slegato dal codice "presentazionale".

## Delimitare il codice PHP

Anche qualora non vi fosse HTML, ogni codice di PHP deve essere racchiuso dai tag <?php e ?>.
Se l'interprete è configurato appositamente può riconoscere la sintassi abbreviata <? e ?>, del tutto simile alla precedente ma il cui uso è fortemente scoraggiato e da evitare. D'ora in avanti nel testo troverete sempre la versione estesa <?php.

### File contenenti solo PHP

Nel caso il file contenga soltanto codice PHP (senza testo o HTML) è preferibile omettere il tag di chiusura. In questo modo si eviterà che spazi, tabulazioni o interruzioni di linea inseriti accidentalmente dopo di esso possano causare errori (per esempio quando si gestisce il buffer dell'output o quando si inizializza una sessione). Si ricordi, ovviamente, di porre <?php all'inizio del file, prima di ogni altra cosa.

## Separazione delle istruzioni

All'interno dei tag delimitatori si possono inserire un qualsiasi numero di istruzioni, ciascuna delle quali deve essere seguita dal punto e virgola per separarla dalla successiva. Esso può essere omesso nell'ultima istruzione. Tuttavia questa tecnica può generare confusione (o addirittura errore se si aggiungesse altro codice) pertanto non è una consigliata.
È possibile inserire più istruzioni sulla stessa riga o una singola istruzione su più righe. Sebbene tra ogni istruzione siano ammessi caratteri di spaziatura e tabulazioni, non si deve abusare di questa grande flessibilità: ogni programmatore dovrebbe scrivere codice pulito e leggibile.
Le righe che iniziano con i caratteri // sono commenti che il parser ignora totalmente. Saranno spiegati dettagliatamente nella prossima sezione.

## Il primo esempio: hello world

Procediamo alla creazione di un file semplice che abbia come finalità solamente quello di mostrare all'utente la classica scritta "Hello world!" ("Ciao mondo!"), salvandolo con il nome prova.php nella directory riconosciuta dal webserver che abbiamo installato.
Se tutto è configurato correttamente, visitando l'indirizzo http://localhost/prova.php vedremo una pagina contenente la scritta "Hello world!". Per farlo abbiamo inserito un'istruzione che fa uso del costrutto echo, il quale invia in output una o più stringhe. print agisce allo stesso modo, è anch'esso un costrutto del linguaggio PHP (non, quindi, una funzione, che saranno esaminate più avanti in questo libro) ma può inviare in output una sola stringa.
Esiste una sintassi abbreviata per inviare in output una stringa ed è la seguente: <?= ?>. Può essere utile quando ci si trova di fronte a un codice in cui è presente codice HTML, come visto nell'esempio precedente.
Ovviamente usare un linguaggio come PHP per inviare output totalmente statici – come negli esempi visti – non avrebbe utilità. La potenza della programmazione risiede nella dinamicità, alla cui base vi sono le variabili che qui non sono state presentate per motivi di semplicità.