1. PHP5
prima parte - i fondamenti del linguaggio
Gianfranco Fedele
Analista programmatore
gianfrasoft@gmail.com
gianfrasoft.wordpress.com
www.linkedin.com/in/gianfrasoft
2. PHP5: Introduzione a PHP
• È un linguaggio di programmazione di tipo scripting
(come, Bash, Javascript, Perl, …), ed è caratterizzato da:
– Codice iterpretato (non compilato).
– Tipizzazione debole (casting implicito).
– È HTML embedded.
– È un linguaggio procedurale con estensioni ad oggetti.
• È un linguaggio di programmazione utilizzato per lo
sviluppo di pagine web dinamiche “lato server”.
gianfrasoft.wordpress.com - 2008
3. PHP5: Paradigma Web con PHP / 1
Web Server
Browser client page
HTTP
Server
Richiesta
GET/POST
PHP
files
DB
• Il client richiede al server di elaborare una pagina HTML contenente script
PHP.
• L'esecuzione ha come risultato una pagina di solo HTML.
• Il server invia la pagina ottenuta al browser per la visualizzazione.
gianfrasoft.wordpress.com - 2008
4. PHP5: Paradigma Web con PHP / 2
• Dinamicità “lato client”
– Presentazione dinamica: interazione con i contenuti ricevuti dal server.
– Tecnologie:
• Javascript + DOM.
• Applet Java.
• Flash.
• ...
gianfrasoft.wordpress.com - 2008
5. PHP5: Paradigma Web con PHP / 3
• Dinamicità “lato server”
– Possibilità di generare tutti i contenuti dinamicamente
• prelevando informazioni da diverse sorgenti (file, DB, Internet, ...).
• processando testo e immagini.
• gestendo profili e sessioni.
• ...
– Tecnologie:
• Common Gateway Interface (CGI).
• Scriptlet (PHP, Perl, ASP, JSP, …).
• Linguaggi HTML-Embedded (PHP, ASP, JSP)
gianfrasoft.wordpress.com - 2008
6. PHP5: Il Web 2.0 - cenni
• Ajax - Asynchronous JavaScript and XML
utilizza una combinazione di:
– HTML (o XHTML) e CSS per il markup e lo stile;
– DOM (Document Object Model) manipolato attraverso JavaScript.
– l'oggetto XMLHttpRequest per l'interscambio asincrono dei dati tra il browser
dell'utente e il web server.
– XML come formato di scambio dei dati, anche se di fatto qualunque formato può
essere utilizzato.
– PHP o qualsiasi altra tecnologia per il processamento dei dati lato server
gianfrasoft.wordpress.com - 2008
7. PHP5: Caratteristiche di PHP
• Punti di forza del PHP:
– È semplice (HTML embedded).
– È open source (sotto licenza GPL).
– È caratterizzato da buone prestazioni
– Grazie a Zend Engine 2 introduce un nuovo modello di programmazione ad
oggetti, per l’interazione con file XML e per il supporto dei Web Services
– È fornito di molte librerie per:
• Processamento immagini (GD)
• Connessione ai database (MySQL, PostgreSQL, Oracle, ...)
• Parser XML anche per processori XSLT
• Compressione dati
• SSL
• Generazione file PDF
• Web Services (SOAP, XML-RPC, ...)
• ...
– Sono disponibili archivi di estensioni e librerie PHP (PEAR, …)
– Consente la realizzazione di applicazioni aziendali
gianfrasoft.wordpress.com - 2008
8. PHP5: phpinfo()
• Per verificare che PHP sia correttamente installato e funzionante sul server:
– Interrogare un semplice script contentente:
<?php phpinfo() ?>
– Questo script visualizza molte informazioni sullo stato corrente del PHP Queste
includono informazioni sulle opzioni di compilazione del PHP, sui moduli, la
versione di PHP, informazioni sul server e sull'ambiente (se compilato come
modulo), l'ambiente PHP, la versione di OS, percorsi, valori delle configurazioni
base e attuali, intestazioni HTTP e la licenza del PHP.
– Dato che ogni sistema ha una configurazione differente, phpinfo() viene
comunemente utilizzato per verificare le impostazioni di configurazione e le
variabili predefinite disponibili in un dato sistema.
– phpinfo() è utile come strumento di debug poichè visualizza tutti i dati EGPCS
(Environment, GET, POST, Cookie, Server).
gianfrasoft.wordpress.com - 2008
9. PHP5: Sintassi
• Per inserire il codice PHP all’interno delle pagine web (HTML) si utilizzano
speciali tag:
– <?php ... ?> (oppure <? ... ?>) (il più usato)
– <% ... %> (da abilitare in php.ini)
– <SCRIPT LANGUAGE="PHP"> ... </SCRIPT>
(quest’ultimo può confondere poiché è utilizzato per i linguaggi client-side!)
<html>
<head>
<title>Ciao mondo!</title>
</head>
<body>
<?php
// Questo è codice PHP racchiuso tra i tag "classici"
print "<hl>Ciao mondo!</hl>";
?>
</body>
</html>
gianfrasoft.wordpress.com - 2008
10. PHP5: Commenti
• I commenti sono indispensabili per una programmazione chiara degli script
PHP:
<?php
/*
* Questo è un commento stile C
*/
// Questo è un commento
// stile C++
# Questo è un commento
# stile Perl
?>
gianfrasoft.wordpress.com - 2008
11. PHP5: Variabili / 1
• In PHP il nome di una variabile può contenere solo caratteri alfanumerici e
l’underscore (_).
• L’assegnazione del valore ad una variabile avviene mediante l’operatore =.
• Le variabili vengono generate automaticamente nell’ambito della prima
assegnazione (dichiarazione implicita).
• In PHP valgono le regole della tipizzazione debole, ovvero il tipo della variabile
viene determinato alla prima assegnazione di un valore, oppure mediante
conversioni implicite, conversioni esplicite o casting.
// Assegnazione di una viariabile
$variabile = "valore";
print($variabile) // stampa “valore" // Una variabile dinamica
$tavola = "bicchiere";
// Casting esplicito $$tavola = "acqua";
print($bicchiere); // stampa "acqua"
$variabile = "5";
print((int)$variabile) // stampa 5
gianfrasoft.wordpress.com - 2008
12. PHP5: Variabili / 2
• La funzione isset(var) restituisce vero (TRUE) se la variabile esiste, falso
(FALSE) in caso contrario.
• La funzione empty(var) restituisce TRUE se la variabile ha valore nullo,
FALSE in caso contrario.
• L’istruzione uset(var) distrugge la variabile specificata.
// $n non esiste
if (!isset($n)) { print '$n non esiste <br>'; }
if (empty($n)) { print '$n è vuota <br>'; }
$m = $n + 5; // $m vale 5
print '$m vale '.$m.' <br>';
// ora $n esiste
$n = 1;
if (isset($n)) { print 'ora $n esiste <br>'; }
if (empty($n)) { print 'ma $n è ancora vuota <br>'; }
unset($n);
// ora $n NON esiste
if (!isset($n)) { print 'ora $n NON esiste <br>'; }
gianfrasoft.wordpress.com - 2008
13. PHP5: Costanti
• Le costanti vengono impostate manualmente usando l'istruzione define().
• Per controllare che una costante sia definita effettivamente è necessario
utilizzare la funzione defined(), considerando il solo argomento che identifica il
nome della costante da controllare.
// definisco una costante
define("PROVA", "Valore della costante PROVA.");
if (defined("PROVA"))
print PROVA;
gianfrasoft.wordpress.com - 2008
14. PHP5: Tipi di dati / 1
• I tipi in PHP si dividono in:
– Tipi semplici: booleani, interi, numeri a virgola mobile, stringhe.
– Tipi composti: array, oggetti.
$a = 2.34;
– Le variabili non vanno dichiarate $b = "Ciao mondo";
$c = 3;
– La conversione di tipo è
$pigreco = 3 + 0.1415;
automatica
– I tipi vengono assegnati per
$sub = substr(20340, 2, 2);
contesto. $sub = $sub + 5;
print("sub vale $sub");
// output: sub vale 39
gianfrasoft.wordpress.com - 2008
15. PHP5: Tipi di dati / 2
• Per determinare il tipo di una variabile:
– gettype(var) restituisce una descrizione del tipo della variabile.
– Per ogni tipo è definita una funzione predicato che restituisce TRUE se
l'argomento è del tipo in questione:
• is_bool
• is_int
• is_string
• …
La lista completa è al sito: http://hu.php.net/manual/it/ref.var.php
– Queste funzioni sono molto utili per un efficace filtraggio dell’input ai fini della
gestione della sicurezza.
gianfrasoft.wordpress.com - 2008
16. PHP5: Tipo boolean
• Una variabile booleana può assumere solo due valori di verità: TRUE e
FALSE (valori costanti).
// Creo due variabili
$a = TRUE;
$b = 75;
// L'istruzione seguente stampa "$a è bool"
if (is_bool($a)) echo '$a è bool ';
else echo '$a non è bool ';
// Questa invece stampa "$b non è bool"
if (is_bool($b)) echo '$b è bool ';
else echo '$b non è bool ';
gianfrasoft.wordpress.com - 2008
17. PHP5: Tipo stringa
• Una stringa, è una sequenza di caratteri.
• Una lista di tutte le funzioni per l’analisi e la manipolazione delle stringhe in
PHP è alla pagina:
http://it2.php.net/manual/it/ref.strings.php
in particolare la funzione htmlspecialchars() è molto utile per il filtraggio
dell’input in ambito di gestione della sicurezza delle pagine PHP.
// Una stringa costante
$mio_nome = "Gianfranco";
// Una stringa vuota
$vuota = "";
gianfrasoft.wordpress.com - 2008
18. PHP5: Interpolazione
• Le stringhe racchiuse da apici singoli rappresentano esattamente ciò che
esse contengono.
• Le stringhe fra apici doppi attuano una interpolazione dei dati:
– I nomi delle variabili che cominciano per $ vengono sostituite con il valore delle
variabili dopo che questo è stato convertito in tipo stringa.
– Sequenze di caratteri che cominciano con il backslash (), come n, t, r, …
vengono sostituite con i corrispondenti caratteri speciali.
– Sequenze di caratteri $, " e causano rispettivamente la stampa dei caratteri
$, " e .
$a = “primo"; primo,,“secondo"+2.2
$b = “secondo";
$c = .22e+1; // notazione esponenziale
print ("$a,$terzo,"$b"+$c");
gianfrasoft.wordpress.com - 2008
19. PHP5: Tipo array / 1
• Un array è una collezione di valori individuati da un nome e da un indice.
• L'indice può essere un numero intero ma anche una stringa: nel secondo
caso l'array si definisce associativo.
• in PHP gli elementi di un array possono essere di tipi diversi, anche array.
Un array che contiene altri array è difatti un array multidimensionale.
gianfrasoft.wordpress.com - 2008
20. PHP5: Tipo array / 2
• Un array può essere creato utilizzando il costrutto array() oppure lo si può
creare implicitamente, aggiungendovi elementi.
$lista = array("mele", "pere", "pane", "latte");
$lista[0] = "mele"; $lista[] = "mele";
$lista[1] = "pere"; $lista[] = "pere";
$lista[2] = "pane"; $lista[] = "pane";
$lista[3] = "latte"; $lista[] = "latte";
• Nel caso di un array associativo:
$lista_della_spesa = array("primo" => "pasta",
"secondo" => "carne",
"contorno" => "insalata"); // nota la variabile autoesplicativa
$lista_della_spesa["primo"] = "pasta";
$lista_della_spesa["secondo"] = "carne";
$lista_della_spesa["contorno"] = "insalata";
gianfrasoft.wordpress.com - 2008
21. PHP5: Array multidimensionali
• Un array non è vincolato a contenere informazioni dello stesso tipo. Neppure
se si tratta di un array multidimensionale.
• L’accesso ai dati di un array multidimensionale si attua indicando in sequenza
gli indici dell’array principale e dell’array interno: ciò ricorsivamente, per quanti
possono essere i livelli di annidamento dell’array.
// Un array di quattro elementi di tipo diverso
$anagrafici = array("Gianfranco
Fedele", TRUE, array(5, 3, 1973));
// Questa istruzione stampa "Gianfranco Fedele";
echo $anagrafici[0];
echo "<br>";
// Questa stampa il numero 1973
echo $anagrafici[2][2];
gianfrasoft.wordpress.com - 2008
22. PHP5: Tipo object
• PHP supporta il paradigma di programmazione a oggetti mediante il tipo
object per le istanze di classi PHP.
– La funzione is_object(var), restituisce TRUE se è un oggetto e FALSE in
caso contrario.
– La funzione gettype(var), data una variabile di tipo object restituisce la
stringa object.
• PHP è un linguaggio con estensioni per la programmazione ad oggetti, ma
non è un linguaggio ad oggetti “puro” come Java.
gianfrasoft.wordpress.com - 2008
23. PHP5: Casting e conversione
• La conversione dei tipi in PHP nella maggior parte dei casi avviene in modo
implicito e trasparente: l'interprete PHP, in base al contesto, stabilisce il tipo
da assegnare alle variabili.
• È comunque possibile operare delle conversioni esplicite utilizzando le
funzioni (intval(), strval(), …) oppure mediante il casting:
$a = 10; // $a e' una variabile intera e vale 10
$b = $a + 1.5; // $b e' un numero in virgola mobile (11.5)
$c = "5+$a"; // $c e' una stringa ("5+10")
echo (int)$b; // Adesso $b è di tipo int e vale 11 (parte intera di $b)
gianfrasoft.wordpress.com - 2008
24. PHP5: Operatori aritmetici
• Sono gli operatori delle operazioni aritmetiche basilari.
Esempio Risultato...
$a + $b La somma di $a e $b
$a - $b La differenza fra $a e $b
$a * $b Il prodotto di $a e $b
$a / $b Il rapporto tra $a e $b
$a % $b Il resto della divisione di $a per $b
// Divisione
$dividendo = 15;
$divisore = 2;
// $rapporto vale 7.5
$rapporto = $dividendo / $divisore;
// $resto vale 1;
$resto = $dividendo % $divisore;
gianfrasoft.wordpress.com - 2008
25. PHP5: Concatenazione di stringhe
• L’operatore di concatenazione delle stringhe è “.“
// nome e cognome
$nome = "Gianfranco";
$cognome = "Fedele";
// Concatenazione
$nome_completo = $nome . " " . $cognome;
• Lo stesso risultato è possibile mediante l’interpolazione nelle stringhe:
$nome = "Gianfranco";
$cognome = "Fedele";
$nome_completo = "$nome $cognome";
gianfrasoft.wordpress.com - 2008
26. PHP5: Operatori di confronto
• Tra gli operatori di confronto classici, si noti la differenza tra gli operatori:
== e ===.
Esempio Restituisce TRUE se...
$a == $b $a e $b sono uguali (stesso valore)
$a === $b $a e $b sono uguali (stesso valore e tipo)
$a != $b $a e $b sono diversi
$a < $b $a è minore di $b
$a <= $b $a è minore o uguale di $b
$a > $b $a è maggiore di $b
$a >= $b $a è maggiore o uguale di $b
gianfrasoft.wordpress.com - 2008
27. PHP5: Operatori logici
• Gli operatori logici consentono di legare tra loro diverse condizioni,
costruendone di nuove.
Operatore Esempio Restituisce TRUE se…
not !$a $a è falsa
and $a && $b ($a and $b ) $a e $b sono entrambe vere
or $a || $b ($a or $b ) almeno una tra $a e $b è vera
xor $a xor $b solo una tra $a e $b è vera
gianfrasoft.wordpress.com - 2008
28. PHP5: Operatori combinati
• L‘opertore = non è l’unico operatore di assegnazione disponibile in PHP.
$somma = $a + $b;
$frase = "La somma e' pari a $somma";
• Esistono operatori di assegnazione detti operatori combinati:
Esempio Risultato Esempio Risultato
$a += $b $a = $a + $b $n++ incrementa (decrementa) $n
$a -= $b $a = $a - $b $n-- di uno e ritorna il valore
$a *= $b $a = $a * $b ++$n ritorna $n e incrementa
$a /= $b $a = $a / $b --$n (decrementa) di uno
$a %= $b $a = $a % $b
$a .= $b $a = $a . $b
gianfrasoft.wordpress.com - 2008
29. PHP5
prima parte - FINE
Gianfranco Fedele
Analista programmatore
gianfrasoft@gmail.com
gianfrasoft.wordpress.com
www.linkedin.com/in/gianfrasoft