Sei sulla pagina 1di 10

Basi del linguaggio

PHP (acronimo ricorsivo di Php Hypertext Preprocessor) il linguaggio di scripting lato server attualmente pi diffuso nel web. Un linguaggio di scripting un linguaggio interpretato il cui codice (lo script) pu essere inserito nel codice HTML. Quando il web client richiede al server una pagina contenente uno script php, questo viene elaborato sul server, producendo come risultato una pagina HTML. La pagina in questione viene poi inviata al client che ne ha fatto richiesta. Leffetto principale che si ottiene utilizzando PHP , quindi, la creazione dinamica di contenuto HTML, con la conseguenza che utenti diversi possono ottenere, per la stessa richiesta, risposte differenti. Un esempio tipico laccesso alla propria area riservata, su un sito presso il quale si effettuata la registrazione: la home page solitamente uguale per tutti ma, se si effettua il login, si pu accedere ad una sezione riservata che cambier in base allutente. Potete scaricare PHP allurl http://php.net/downloads.php, scegliendo la versione adatta al vostro sistema operativo.

Gli script PHP <?php codice php ?>

Il codice PHP viene inserito nel codice HTML mediante la seguente sintassi

Nota: esistono altri possibili formati (abbreviati) per le istruzioni PHP, che non prenderemo in considerazione. Ogni istruzione termina con il separatore punto e virgola, eccetto quando nel codice presente un'unica istruzione o quando l'istruzione l'ultima della serie. In questi casi il separatore punto e virgola opzionale. Per esempio: <?php istruzione1; istruzione2; ?> equivale a: <?php istruzione1; istruzione2 ?> I file che contengono script php devono avere estensione .php. Esempio Il seguente script permette di visualizzare la data del server, nella forma giorno-meseanno: 1

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

<?php echo date("d-m-Y") ?> Lo statement echo consente di effettuare loutput del risultato di una elaborazione. Parlando di output, occorre fare una precisazione molto importante. Normalmente loutput di un programma viene visualizzato sul monitor del computer. In questo caso si dice che il flusso di output standard il monitor. Quando utilizziamo PHP per la comunicazione client/server, il flusso di output standard non il monitor ma la pagina HTML che verr restituita al client. In altri termini, loutput prodotto da PHP con echo viene scritto allinterno della pagina HTML di risposta e va a sostituire completamente il codice PHP. Analizziamo meglio questo meccanismo con un esempio. Consideriamo il seguente documento HTML: <html> <head> <title> Data del server </title> </head> <body> La data del server: <br/> <?php echo date("d-m-Y"); ? > </body> </html> Supponiamo che lurl della pagina sia http://www.miosito.com/data.php, dove data.php il nome del file contenente lo script. Quando lutente richiede la pagina, inserendo lurl nella barra degli indirizzi del browser, il server effettua le seguenti operazioni: reperisce la pagina richiesta, dal disco, elabora lo script mediante linterprete PHP, inserisce loutput dellelaborazione (la data) nella pagina HTML, al posto dello script, invia la pagina HTML al client. La pagina di risposta conterr, pertanto, il seguente codice HTML: <html> <head> <title> Data del server </title> </head> <body> La data del server: <br/> 23-02-2012 </body> </html>

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

Come potete osservare, al posto del codice PHP troviamo la data. Lutente, quindi, visualizzer

Guardate lurl della pagina (riquadro rosso). Io non possiedo un sito www.miosito.com sul quale presente la pagina data.php, pertanto devo simulare lesistenza di un tale sito utilizzando lo stesso computer che uso come client. In ogni caso, anche se si possiede un sito, pu essere conveniente effettuare delle prove sulla macchina locale, facendole assumere di volta in volta il ruolo di client o di server. La macchina locale (detta anche interfaccia di loopback) identificata dallindirizzo IP 127.0.0.1 a cui associato il nome localhost. Analizziamo meglio lurl in questione http://localhost/5ais11-12/dispensam1/data.php

http://localhost individua la macchina locale; 5ais11-12/dispensam1/data.php il percorso che conduce al file data.php; infatti, il file si trova allinterno della cartella dispensam1 che, a sua volta, contenuta nella cartella 5ais11-12.

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

Ma dove collocato data.php? Il file si trova allinterno della document root del web server installato sulla vostra macchina. La document root di un web server la directory che contiene le pagine del sito. Quindi bisogna installare un web server? Quale? Certo, occorre installare un web server per poter lavorare in locale con PHP. Normalmente si utilizza il web server Apache, anche se PHP funziona con altri web server, come IIS, il web server della Microsoft integrato nei sistemi server. Potete scaricare Apache allurl http://httpd.apache.org/download.cgi#apache24, facendo attenzione a scegliere la versione adatta al vostro sistema operativo. In Apache la document root viene creata automaticamente durante linstallazione e si chiama htdocs. Naturalmente, possibile modificare la document root, ma ci occuperemo di queste questioni in unaltra dispensa, dedicata interamente alla configurazione di Apache. Allinterno di htdocs potete creare le cartelle e sottocartelle per contenere le pagine del vostro sito. Ritornando allurl http://localhost/5ais11-12/dispensam1/data.php, possiamo notare che non necessario indicare esplicitamente la document root htdocs. Nota Invece di installare separatamente php e Apache potete ricorrere a pacchetti autoinstallanti che includono anche il database server MySQL abbinato a un database manager (tipicamente phpMyAdmin). Vi suggerisco alcuni di questi pacchetti:

XAMPP: http://www.apachefriends.org/it/xampp.html WampServer (solo per sistemi Windows): http://www.wampserver.com/en/ MAMP (per MAC): http://www.mamp.info/en/index.html

Passiamo ora ad esaminare alcuni fondamenti del linguaggio.

L'istruzione echo

L'istruzione echo consente di produrre in output una o pi stringhe. La sintassi la seguente: echo stringa1 [,stringa2.....] Le parentesi quadrate racchiudono elementi che sono opzionali; stringa1 e stringa2 possono essere stringhe costanti (racchiuse tra virgolette) o variabili contenenti stringhe.
Es) echo "ABCD" visualizza la stringa ABCD.

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

Variabili

Le variabili, in tutti i linguaggi di programmazione, sono costituite dalla coppia <identificatore,valore>. L'identificatore il nome assegnato dal programmatore alla variabile. Il valore il valore corrente della variabile. Iniziamo a vedere quali sono le convenzioni adottate dal linguaggio PHP per gli identificatori di variabili: iniziano con il carattere "$" (dollaro); il carattere $ pu essere seguito da una lettera o dal carattere "_" (underscore). PHP case sensitive, quindi occorre fare attenzione alluso di maiuscole e minuscole: $xyz diverso da $XYZ e anche da $Xyz.
Es) $idvar un identificatore di variabile valido. Es) $2idvar non un identificatore valido. Es) $_idvar un identificatore valido. Es) $idvar, $IDvar, $IDVAR identificano variabili diverse.

Per quanto riguarda il tipo delle variabili, PHP (come altri linguaggi di scripting) si discosta dalle regole seguite dalla maggior parte dei linguaggi di programmazione, i quali prevedono che le variabili debbano essere dichiarate prima di essere utilizzate. Vi ricordo che la dichiarazione di una variabile consente di specificare il suo tipo, che non potr essere pi modificato. PHP non impone, invece, che le variabili siano dichiarate: il tipo di una variabile determinato automaticamente alla prima assegnazione o dipende dal contesto in cui la variabile utilizzata. Inoltre, una variabile pu cambiare tipo durante l'elaborazione. Si dice che PHP un linguaggio "non tipizzato". Visualizzare il valore di una variabile La visualizzazione del valore di una variabile possibile mediante l'istruzione echo.
Es) <?php $nome= "Luigi"; echo $nome ?>

restituisce il valore della variabile $nome, cio la stringa Luigi.

Tipi di dati

I tipi in PHP sono classificati in: scalari; composti; speciali.


Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

I tipi scalari comprendono: valori booleani; numeri interi; numeri in virgola mobile; stringhe. I tipi composti comprendono: array; oggetti. I tipi speciali comprendono: resource; NULL. Nella seguente tabella sono descritti i tipi scalari, con le parole chiave che li individuano e i valori che possono assumere. Tipo booleano intero virgola mobile stringa TIPI SCALARI Parola chiave Valori bool, boolean {TRUE,FALSE} int, integer Z={...-2,-1,0,1,2,3,...} float, double, real Q={numeri razionali} string {sequenze di alfanumerici}

Gli altri tipi saranno trattati in seguito. Osservazioni 1. PHP utilizza, come delimitatori di stringhe, indifferentemente gli apici o i doppi apici (virgolette). 2. TRUE e FALSE sono case insensitive. 3. Non ci sono limiti alla lunghezza delle stringhe. 4. I numeri privi di punto decimale sono considerati interi, mentre quelli con il punto decimale sono interpretati come double. Per esempio $x= 10 attribuisce a $x il tipo int; $x=10.0 attribuisce a $x il tipo double.

Assegnazione

L'assegnazione permette di attribuire ad una variabile un determinato valore. Il simbolo utilizzato per l'assegnazione "=" e la sintassi la seguente: $idvar = espressione
Es) $nome= "Luigi"; assegna alla variabile $nome il valore Luigi e, automaticamente, determina il tipo della variabile, che string.

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

In PHP possibile assegnare uno stesso valore a 2 variabili, contemporaneamente.


Es) $a= $b= 10;

Costanti

Le costanti, come le variabili, sono costituite dalla coppia <identificatore,valore>, con la differenza che una costante ha un valore che non pu essere modificato durante l'elaborazione. Le convenzioni adottate dal linguaggio PHP per gli identificatori di costanti sono le seguenti: sono scritti in maiuscolo; iniziano con una lettera o con il carattere "_" (underscore). Per quanto riguarda il valore, le costanti possono solo assumere valori di tipo scalare (booleani, interi, reali, stringhe). Inizializzare una costante: define In PHP non possibile utilizzare l'operatore di assegnazione, per attribuire un valore alle costanti, ma si deve usare la funzione define: bool define(string id_costante, mixed val_costante) La funzione define: restituisce un valore booleano (bool), che indica se l'operazione andata a buon fine; ha un primo parametro di tipo string (id_costante), che indica l'identificatore della costante; ha un secondo parametro (val_costante), di qualsiasi tipo (mixed) che indica il valore della costante; assegna a id_costante il valore specificato da val_costante.
Es) <? php define("PI",3.14) ?> assegna alla costante PI il valore double 3.14.

Visualizzare il valore di una costante: constant Come per le variabili, anche il valore di una costante pu essere visualizzato mediante l'istruzione echo. Un altro modo per ottenere lo stesso risultato, usare la funzione constant: mixed constant(string id_costante) La funzione constant: restituisce un valore di qualsiasi tipo scalare (mixed); ha un solo parametro di tipo string (id_costante), che indica l'identificatore della costante;
Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

restituisce il valore della costante specificata come parametro.


<?php define("MAXSIZE",100); echo MAXSIZE; echo constant("MAXSIZE"); ?>

Es)

Le istruzioni echo restituiscono entrambe il valore 100.

Conversioni di tipo

Il tipo di una variabile pu essere convertito in un tipo diverso, mediante cast. Il cast si effettua anteponendo alla variabile o al valore da assegnare ad essa, il tipo in cui si vuole fare la conversione, racchiuso tra parentesi.
Es) (double) $intero trasforma il tipo della variabile $intero (che supponiamo essere int) in double. Es) $intero= (int) 2+12.9 Trasforma il risultato dell'espressione (14.9) in un intero mediante arrotondamento e lo assegna alla variabile $intero. $intero assumer valore 15.

Nelle seguenti tabelle sono riassunte alcune regole seguite da PHP per le conversioni di tipo.

Conversione in booleano: (bool) $idvar


tipo di $idvar int double string string valore di $idvar 0 0.0 "" "0" valore dopo la conversione FALSE FALSE FALSE FALSE

Ogni altro tipo/valore non riportato nella precedente tabella, convertito in TRUE.

Conversione in intero: (int) $idvar


tipo di $idvar bool bool double valore di $idvar FALSE TRUE qualsiasi valore dopo la conversione 0 1 valore arrotondato

Se un numero double maggiore del massimo numero intero rappresentabile, la conversione non ha effetto. Per quanto riguarda la conversione in stringa, si pu usare indifferentemente la sintassi (string) $idvar oppure "$idvar". Nota: generalmente PHP esegue automaticamente le conversioni di tipo, se necessario.
Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

Operatori

Nelle tabelle seguenti sono riassunti i principali operatori del linguaggio PHP.

OPERATORI ARITMETICI
precedenza 2 2 1 1 1 operatore addizione sottrazione moltiplicazione divisione modulo simbolo + * / % esempio $a + $b $a - $b $a * $b $a / $b $a % $b descrizione somma di $a e $b differenza di $a e $b prodotto di $a e $b quoziente di $a e $b resto della divisione di $a e $b

1 indica la precedenza pi alta. Gli operatori aritmetici che hanno la stessa precedenza sono associativi a sinistra (si esegue prima quello pi a sinistra). Osservazioni 1. In PHP non esiste la divisione intera; l'operatore "/" restituisce sempre un double, anche se gli operandi sono int. Per ottenere un quoziente intero occorre eseguire un cast. 2. Se il risultato di un'operazione aritmetica tra interi produce un overflow, il risultato viene trasformato automaticamente in double; questo non vale per un underflow. 3. Il modulo negativo se la variabile $a negativa.

OPERATORI DI CONFRONTO
precedenza 2 2 2 2 2 1 1 1 1 operatore uguale identico diverso diverso non identico minore maggiore minore o uguale maggiore o uguale simbolo == === != <> != = < > <= >= esempio $a = = $b $a = = =$b $a != $b $a < > $b $a |= = $b $a < $b $a > $b $a <= $b $a >= $b descrizione vero se $a e $b sono uguali; falso altrimenti vero se $a e $b sono uguali e dello stesso tipo; falso altrimenti vero se $a e $b sono diversi; falso altrimenti vero se $a e $b sono diversi; falso altrimenti falso se $a e $B sono uguali e dello stesso tipo; vero altrimenti vero se $a minore di $b; falso altrimenti vero se $a maggiore di $b; falso altrimenti vero se $a minore o uguale a$b; falso altrimenti vero se $a maggiore o uguale a $b; falso altrimenti

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

OPERATORI LOGICI
precedenza 3 6 5 2 4 1 operatore OR OR XOR AND AND NOT simbolo || or xor && and ! esempio $a || $b $a or $b $a xor $b $a && $b $a and $b ! $a descrizione falso se $a e $b sono entrambi falsi; vero in ogni altro caso falso se $a e $b sono entrambi falsi; vero in ogni altro caso vero se $a e $b hanno valori di verit diversi; falso altrimenti vero se $a e $B sono entrambe vere; falso in ogni altro caso vero se $a e $B sono entrambe vere; falso in ogni altro caso vero se $a falso; falso altrimenti

Nota: il confronto tra un intero e una stringa determina la conversione della stringa in intero. Concatenazione di stringhe Si utilizza l'operatore dot (punto).
Es) $stringa= "buona" $str= $stringa. "notte"

il valore della variabile str la stringa "buonanotte", ottenuta come concatenazione delle due stringhe "buona" e "notte".

Commenti
I commenti non sono elaborati dall'interprete PHP. Per inserire i commenti nel codice si possono utilizzare le seguenti notazioni: //, permette di inserire un commento su una riga; #, permette di inserire un commento su una riga; /*...*/, permette di inserire un commento su pi righe (non annidare questi commenti).

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Docente: Bocchi Cinzia Ultimo aggiornamento: 23/02/2012

10