gianfrasoft corso di php parte 1
DESCRIPTION
TRANSCRIPT
PHP5prima parte - i fondamenti del linguaggio
Gianfranco Fedele
Analista programmatore
gianfrasoft.wordpress.com
www.linkedin.com/in/gianfrasoft
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
PHP5: Paradigma Web con PHP / 1
HTTPServer
Browser clientServer
RichiestaGET/POST
• 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.
PHP
DB
Webpage
files
gianfrasoft.wordpress.com - 2008
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
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
• Ajax - Asynchronous JavaScript and XMLutilizza 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
PHP5: Il Web 2.0 - cenni
gianfrasoft.wordpress.com - 2008
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
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
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
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
• 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.
PHP5: Variabili / 1
// Assegnazione di una viariabile$variabile = "valore";print($variabile) // stampa “valore"
// Casting esplicito
$variabile = "5";
print((int)$variabile) // stampa 5
// Una variabile dinamica$tavola = "bicchiere";$$tavola = "acqua";print($bicchiere); // stampa "acqua"
gianfrasoft.wordpress.com - 2008
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 esisteif (!isset($n)) { print '$n non esiste <br>'; }if (empty($n)) { print '$n è vuota <br>'; }
$m = $n + 5; // $m vale 5print '$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 esisteif (!isset($n)) { print 'ora $n NON esiste <br>'; }
gianfrasoft.wordpress.com - 2008
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 costantedefine("PROVA", "Valore della costante PROVA.");
if (defined("PROVA"))print PROVA;
gianfrasoft.wordpress.com - 2008
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.
– Le variabili non vanno dichiarate
– La conversione di tipo è
automatica
– I tipi vengono assegnati per
contesto.
$a = 2.34;
$b = "Ciao mondo";
$c = 3;
$pigreco = 3 + 0.1415;
$sub = substr(20340, 2, 2);$sub = $sub + 5;
print("sub vale $sub");
// output: sub vale 39
gianfrasoft.wordpress.com - 2008
• 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 dellagestione della sicurezza.
PHP5: Tipi di dati / 2
gianfrasoft.wordpress.com - 2008
• Una variabile booleana può assumere solo due valori di verità: TRUE e FALSE (valori costanti).
PHP5: Tipo boolean
// 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
• 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.
PHP5: Tipo stringa
// Una stringa costante
$mio_nome = "Gianfranco";
// Una stringa vuota
$vuota = "";
gianfrasoft.wordpress.com - 2008
• Le stringhe racchiuse da apici singoli rappresentano esattamente ciò cheesse 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 \ .
PHP5: Interpolazione
$a = “primo";
$b = “secondo";
$c = .22e+1; // notazione esponenziale
print ("$a,$terzo,\"$b\"+$c");
primo,,“secondo"+2.2
gianfrasoft.wordpress.com - 2008
• 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.
PHP5: Tipo array / 1
gianfrasoft.wordpress.com - 2008
• Un array può essere creato utilizzando il costrutto array() oppure lo si puòcreare implicitamente, aggiungendovi elementi.
• Nel caso di un array associativo:
PHP5: Tipo array / 2
$lista = array("mele", "pere", "pane", "latte");
$lista[0] = "mele";
$lista[1] = "pere";
$lista[2] = "pane";
$lista[3] = "latte";
$lista[] = "mele";
$lista[] = "pere";
$lista[] = "pane";
$lista[] = "latte";
$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
• Un array non è vincolato a contenere informazioni dello stesso tipo. Neppurese si tratta di un array multidimensionale.
• L’accesso ai dati di un array multidimensionale si attua indicando in sequenzagli indici dell’array principale e dell’array interno: ciò ricorsivamente, per quantipossono essere i livelli di annidamento dell’array.
PHP5: Array multidimensionali
// 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
• 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.
PHP5: Tipo object
gianfrasoft.wordpress.com - 2008
• 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:
PHP5: Casting e conversione
$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
PHP5: Operatori aritmetici
Il resto della divisione di $a per $b$a % $b
Il rapporto tra $a e $b$a / $b
Il prodotto di $a e $b$a * $b
La differenza fra $a e $b$a - $b
La somma di $a e $b$a + $bRisultato...Esempio
// Divisione
$dividendo = 15;
$divisore = 2;
// $rapporto vale 7.5
$rapporto = $dividendo / $divisore;
// $resto vale 1;
$resto = $dividendo % $divisore;
• Sono gli operatori delle operazioni aritmetiche basilari.
gianfrasoft.wordpress.com - 2008
• L’operatore di concatenazione delle stringhe è “.“
• Lo stesso risultato è possibile mediante l’interpolazione nelle stringhe:
PHP5: Concatenazione di stringhe
// nome e cognome
$nome = "Gianfranco";
$cognome = "Fedele";
// Concatenazione
$nome_completo = $nome . " " . $cognome;
$nome = "Gianfranco";
$cognome = "Fedele";
$nome_completo = "$nome $cognome";
gianfrasoft.wordpress.com - 2008
• Tra gli operatori di confronto classici, si noti la differenza tra gli operatori:
== e ===.
PHP5: Operatori di confronto
$a è maggiore o uguale di $b$a >= $b
$a è maggiore di $b$a > $b
$a è minore o uguale di $b $a <= $b
$a è minore di $b $a < $b
$a e $b sono diversi$a != $b
$a e $b sono uguali (stesso valore e tipo)$a === $b
$a e $b sono uguali (stesso valore)$a == $b
Restituisce TRUE se...Esempio
gianfrasoft.wordpress.com - 2008
• Gli operatori logici consentono di legare tra loro diverse condizioni, costruendone di nuove.
PHP5: Operatori logici
solo una tra $a e $b è vera
almeno una tra $a e $b è vera
$a e $b sono entrambe vere
$a è falsa
Restituisce TRUE se…
$a xor $bxor
$a || $b ($a or $b )or
$a && $b ($a and $b )and
!$anot
EsempioOperatore
gianfrasoft.wordpress.com - 2008
• L‘opertore = non è l’unico operatore di assegnazione disponibile in PHP.
• Esistono operatori di assegnazione detti operatori combinati:
PHP5: Operatori combinati
$somma = $a + $b;
$frase = "La somma e' pari a $somma";
$a = $a . $b$a .= $b
$a = $a % $b$a %= $b
$a = $a / $b$a /= $b
$a = $a * $b$a *= $b
$a = $a - $b$a -= $b
$a = $a + $b$a += $b
RisultatoEsempio
ritorna $n e incrementa (decrementa) di uno
incrementa (decrementa) $ndi uno e ritorna il valore
$n++
$n--
RisultatoEsempio
++$n
--$n
gianfrasoft.wordpress.com - 2008
PHP5prima parte - FINE
Gianfranco Fedele
Analista programmatore
gianfrasoft.wordpress.com
www.linkedin.com/in/gianfrasoft