gianfrasoft corso di php parte 1

29
PHP 5 prima parte - i fondamenti del linguaggio Gianfranco Fedele Analista programmatore [email protected] gianfrasoft.wordpress.com www.linkedin.com/in/gianfrasoft

Upload: gianfranco-fedele

Post on 13-Dec-2014

633 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Gianfrasoft   Corso Di Php   Parte 1

PHP5prima parte - i fondamenti del linguaggio

Gianfranco Fedele

Analista programmatore

[email protected]

gianfrasoft.wordpress.com

www.linkedin.com/in/gianfrasoft

Page 2: Gianfrasoft   Corso Di Php   Parte 1

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

Page 3: Gianfrasoft   Corso Di Php   Parte 1

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

Page 4: Gianfrasoft   Corso Di Php   Parte 1

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

Page 5: Gianfrasoft   Corso Di Php   Parte 1

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

Page 6: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 7: Gianfrasoft   Corso Di Php   Parte 1

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

Page 8: Gianfrasoft   Corso Di Php   Parte 1

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

Page 9: Gianfrasoft   Corso Di Php   Parte 1

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

Page 10: Gianfrasoft   Corso Di Php   Parte 1

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

Page 11: Gianfrasoft   Corso Di Php   Parte 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.

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

Page 12: Gianfrasoft   Corso Di Php   Parte 1

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

Page 13: Gianfrasoft   Corso Di Php   Parte 1

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

Page 14: Gianfrasoft   Corso Di Php   Parte 1

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

Page 15: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 16: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 17: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 18: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 19: Gianfrasoft   Corso Di Php   Parte 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.

PHP5: Tipo array / 1

gianfrasoft.wordpress.com - 2008

Page 20: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 21: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 22: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 23: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 24: Gianfrasoft   Corso Di Php   Parte 1

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

Page 25: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 26: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 27: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 28: Gianfrasoft   Corso Di Php   Parte 1

• 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

Page 29: Gianfrasoft   Corso Di Php   Parte 1

PHP5prima parte - FINE

Gianfranco Fedele

Analista programmatore

[email protected]

gianfrasoft.wordpress.com

www.linkedin.com/in/gianfrasoft