Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di...
-
Upload
luciano-agostini -
Category
Documents
-
view
223 -
download
0
Transcript of Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di...
![Page 1: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/1.jpg)
Programmazione WebPHP - Introduzione
1
![Page 2: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/2.jpg)
• PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione di pagine Web• Alcune caratteristiche “tecniche”
• è un linguaggio di scripting• è interpretato (non compilato)• è server-side • è debolmente tipizzato • consente la programmazione Object Oriented
• Ed inoltre.. è Open Source
Cos’è il PHP?
2Programmazione Web - PHP: introduzione
![Page 3: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/3.jpg)
• Il codice PHP viene inserito in una pagina (X)HTML (sul server)• Il codice PHP viene interpretato (sul server)• Viene generata una nuova pagina (X)HTML
Esecuzione di codice PHP
Form (X)HTML
action==“file.php”
Nuova pagina (X)HTML
Interpretazione“file.php”
MySQL
client server
3Programmazione Web - PHP: introduzione
1
![Page 4: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/4.jpg)
Uno script PHP è salvato in un file di testo avente come estensione .php
Per esempio:
Salviamo il tutto in un file dal nome ciao.php all’interno della root del nostro Web server: la pagina sarà quindi accessibile all’indirizzo http://localhost/ciao.php
Preparare il tutto
4Programmazione Web - PHP: introduzione
<?php echo “Ciao mondo!”;?>
![Page 5: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/5.jpg)
• Il codice PHP è racchiuso tra due tag <?php e ?>
• Le istruzioni PHP terminano con il punto e virgola
• I commenti hanno tre diversi stili
Struttura del codice PHP (I)
<?php ... codice PHP ...?>
echo 'Hello ';echo 'world!';
/* Autore: Devis Bianchini Ultima modifica: 15 aprile 2011*/echo '<p>Ordine gestito.</p>'; // Inizio stampa ordineecho '<p>Ordine gestito.</p>'; # Inizio stampa ordine
5Programmazione Web - PHP: introduzione
![Page 6: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/6.jpg)
• Notazione alternativa
Struttura del codice PHP (II)
<script language=“php”> ... codice PHP ...</script>
6Programmazione Web - PHP: introduzione
![Page 7: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/7.jpg)
Esempio: gestione di un ordine
7Programmazione Web - PHP: introduzione
![Page 8: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/8.jpg)
Esempio: gestione di un ordine
8Programmazione Web - PHP: introduzione
![Page 9: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/9.jpg)
Esempio: processa_modulo_ordine.php
9Programmazione Web - PHP: introduzione
![Page 10: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/10.jpg)
Esempio: gestione di un ordine
10Programmazione Web - PHP: introduzione
![Page 11: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/11.jpg)
Nome di una variabile (identificatore): Inizia con il simbolo $Formato da lettere, cifre e underscore ‘_’Lunghezza illimitataNon può iniziare con una cifraCase sensitive: $qviolino $Qviolino
Una variabile viene creata nel momento in cui viene assegnata la prima volta
Variabili
$quantita = 0;$costo = 0.00;...$quantita = $qviolino;
11Programmazione Web - PHP: introduzione
![Page 12: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/12.jpg)
Esistono altri due tipi “speciali”:• NULL: variabili cui non è assegnato un valore o sono state
assegnate con NULL• Resource: rappresentano risorse esterne (esempio:
connessione al database)
Tipi di variabiliTipo Natura del dato
integer Numeri interidouble Numeri realistring Stringhe di caratteriboolean Valori logici (true o false)array Vettori di dati
12Programmazione Web - PHP: introduzione
![Page 13: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/13.jpg)
Tipi di variabili: array (I)
13Programmazione Web - PHP: introduzione
![Page 14: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/14.jpg)
Tipi di variabili: array (II)
14Programmazione Web - PHP: introduzione
![Page 15: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/15.jpg)
Le variabili sono molto “elastiche” nell’assegnamento del tipo di dati
Casting
Tipizzazione in PHP
$quantita = 0;$quantita = ‘Hello’;
$quantita = 0;$costo = (double)$quantita;
15Programmazione Web - PHP: introduzione
![Page 16: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/16.jpg)
Mantengono un valore (come una variabile), che però non può essere cambiato
Costanti
define('PREZZO_FLAUTO', 2500);define('PREZZO_VIOLINO', 8000);define('PREZZO_OBOE', 5400);define('PREZZO_LIUTO', 11000);
define(<nome-costante>, <valore>)
16Programmazione Web - PHP: introduzione
![Page 17: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/17.jpg)
PHP mette a disposizione un gran numero di variabili predefinite
Sono principalmente dedicate a descrivere il server su cui è in funzione, le richieste HTTP, variabili dell’ambiente di esecuzione
Alcune variabili predefinite possono essere dipendenti dalla piattaforma
Variabili predefinite
<?phpecho “<a href=\”http://”,
$_SERVER[“HTTP_HOST”], // nome del sito$_SERVER[“PHP_SELF”], // nome dello script“\”>Link a me stesso</a>\n”;
?>
17Programmazione Web - PHP: introduzione
![Page 18: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/18.jpg)
È possibile inserire direttamente una variabile semplice in una stringa
Tuttavia, le stringhe tra apici semplici non applicano alcuna sostituzione:
Lavorare con le variabili
echo "$qoboe oboe <br />";
echo ‘$qoboe oboe <br />’;
2 oboe
$qoboe oboe
18Programmazione Web - PHP: introduzione
![Page 19: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/19.jpg)
• L’accesso ai campi del modulo può avvenire mediante l’uso di array associativi:
• method="post“ $_POST['qviolino']• method="get“ $_GET['qviolino']
Accesso alle variabili del modulo (I)
'qflauto' 2
'qviolino' 3
'qoboe' 2
'qliuto' 4
19Programmazione Web - PHP: introduzione
![Page 20: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/20.jpg)
• I valori dei campi del modulo possono essere copiati in altre variabili
Accesso alle variabili del modulo (II)
<?php $qflauto = $_POST['qflauto']; $qviolino = $_POST['qviolino']; $qoboe = $_POST['qoboe']; $qliuto = $_POST['qliuto'];?>
20Programmazione Web - PHP: introduzione
![Page 21: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/21.jpg)
L’operatore . (punto) genera la concatenazione delle stringhe
Accesso alle variabili del modulo (III)
21Programmazione Web - PHP: introduzione
![Page 22: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/22.jpg)
Esempio: gestione di un ordine
22Programmazione Web - PHP: introduzione
![Page 23: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/23.jpg)
Operatori aritmetici
Operatore di concatenazione delle stringhe
Operatori (I)
$a = 'Strumenti Musicali ';$b = 'in Franciacorta';$titolo = $a . $b;
23Programmazione Web - PHP: introduzione
![Page 24: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/24.jpg)
Operatore di assegnamento
Operatori di assegnamento combinato
Operatori (II)
$b = 6 + ($a = 5);
<variabile> = <espressione>
24Programmazione Web - PHP: introduzione
![Page 25: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/25.jpg)
Operatore di incremento (++) e decremento (--)
Sono entrambi disponibili in due forme
• Prima della variabile
• Dopo la variabile
Operatori (III)
$a = 5;echo ++$a;
$a = 5;echo $a++;
prima $a viene incrementato (6) e poi visualizzato (6)
prima $a viene visualizzato (5) e poi Invìcrementato (6)
$a = 3;$b = 6;echo ($a--) * (++$b);
$a: 2$b: 7echo: 21
25Programmazione Web - PHP: introduzione
![Page 26: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/26.jpg)
Operatore di confronto
Operatore identità: operandi uguali e dello stesso tipo
Operatori (IV)
$a = 0;$b = ‘0’;
$a == $b: true$a === $b: false
26Programmazione Web - PHP: introduzione
![Page 27: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/27.jpg)
Operatori logici
Operatori (V)
27Programmazione Web - PHP: introduzione
![Page 28: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/28.jpg)
Operatore condizionale (ternario)
Operatori (VI)
( <condizione> ? <valore se vera> : <valore se falsa> )
echo ($voto >= 18 ? 'promosso' : 'bocciato')
$max = ($a >= $b ? $a : $b)
$max3 = ($a >= $b && $a >= $c ? $a : ($b >= $c ? $b : $c))
echo 'Hai ordinato '.$qviolino.' violin‘ .($qviolino == 1 ? 'o' : 'i')
28Programmazione Web - PHP: introduzione
![Page 29: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/29.jpg)
Alcune conversioni di tipo avvengono automaticamente in base agli operatori utilizzati nelle espressioni
La conversione non modifica il tipo degli operandi, che rimangono inalterati
Type juggling
<?php$a = “0”; // $a è la stringa “0”$a .= 2; // $a ora è una stringa che vale “02”$a += 2; // $a ora è l’intero 4$b = $a + 1.3; // $b vale 5.3, $a rimane inalterata
?>
29Programmazione Web - PHP: introduzione
![Page 30: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/30.jpg)
Alcuni operatori sono tipici del linguaggio PHP
• controllo degli errori @: premettendo tale operatore ad un’espressione eventuali messaggi di errore non sono visualizzati
• esecuzione di script della shell ` (apice rovesciato o backtick): il testo tra apici rovesciati viene interpretato come comando della shell, eseguito ed eventualmente assegnato ad una variabile
Altri operatori
<?php$dir = @`ls -l`; // in Windows il comando è
// $dir = @`dir`?>?>
30Programmazione Web - PHP: introduzione
![Page 31: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/31.jpg)
Esempio: gestione di un ordine
31Programmazione Web - PHP: introduzione
![Page 32: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/32.jpg)
Esempio: gestione di un ordine
32Programmazione Web - PHP: introduzione
![Page 33: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/33.jpg)
Per testare o modificare lo stato di una variabile si possono usare le seguenti funzioni:
• isset($var): true se $var esiste, altrimenti false• isset($a, $b, $c, ... ): true se tutte esistono,
altrimenti false• unset($var): elimina $var• empty($var): true se $var non esiste o ha valore zero,
altrimenti false
Funzioni di variabili
$qviolino = 3;echo 'echo1: ' . isset($qviolino) . '<br />'; // TRUEecho 'echo2: ' . isset($qtimpani) . '<br />'; // FALSEecho 'echo3: ' . empty($qviolino) . '<br />'; // FALSEecho 'echo4: ' . empty($qtimpani) . '<br />'; // TRUE
33Programmazione Web - PHP: introduzione
![Page 34: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/34.jpg)
• is_boolean($a): verifica se la variabile contiene un valore booleano• is_integer($a): verifica se la variabile contiene un numero intero• is_float($a), is_double($a), is_array($a), is_resource($a)• is_null($a): verifica se la variabile contiene il valore null• is_numeric($a): verifica se il contenuto della variabile è compatibile con un valore numerico (ossia se è un numero o una stringa convertibile in numero)• gettype($a): restituisce il nome del tipo della variabile sotto forma di stringa
Funzioni di accesso al tipo
34Programmazione Web - PHP: introduzione
![Page 35: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/35.jpg)
Il blocco <istruzioni> viene eseguito solo se <condizione> è vera
L’istruzione if
if($quantita_totale == 0) echo 'Non hai ordinato alcun articolo! <br />';
if(<condizione>) <istruzioni>
if($costo_totale >= 30000){ echo 'Hai diritto ad uno sconto del 10% <br />';}
35Programmazione Web - PHP: introduzione
![Page 36: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/36.jpg)
Il blocco <istruzioni> viene eseguito solo se la condizione del precedente if è falsa
L’istruzione else
if($quantita_totale == 0) echo "Non hai ordinato alcun articolo! <br />";else{ echo 'Ecco la lista degli articoli: <br />'; echo '<ul>'; echo "<li>$qflauto flauti</li>"; echo "<li>$qviolino violini</li>"; echo "<li>$qoboe oboe</li>"; echo "<li>$qliuto liuti</li>"; echo "</ul>";}
else <istruzioni>
36Programmazione Web - PHP: introduzione
![Page 37: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/37.jpg)
È usato quando si hanno più di due rami decisionali:
Viene eseguito solo il blocco di istruzioni corrispondente alla prima condizione veraSe nessuna condizione vera, viene eseguito il blocco della else (se specificata)
L’istruzione elseif
if($costo_totale <= 10000) $sconto = 0.0;elseif($costo_totale > 10000 && $costo_totale <= 20000) $sconto = 0.10;elseif($costo_totale > 20000 && $costo_totale <= 40000) $sconto = 0.20;elseif($costo_totale > 40000 && $costo_totale <= 80000) $sconto = 0.25;else $sconto = 0.30;
elseif <condizione>) <istruzioni>
37Programmazione Web - PHP: introduzione
![Page 38: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/38.jpg)
Il costrutto switch permette di diversificare l’operato del programma al valore dell’espressione testata
L’istruzione switchswitch (<condizione>) {
case <valore1>: <codice> break;case <valore2>: <codice> break;....default: <codice>; break;
}
switch ($nome) { case 'Luca': case 'Giorgio': case 'Franco':
echo "Ciao, vecchio amico!"; break; case 'Mario': echo "Ciao, Mario!"; break; default: print "Benvenuto, chiunque tu sia";
}
38Programmazione Web - PHP: introduzione
![Page 39: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/39.jpg)
Sono utilizzate quando è necessario eseguire più volte lo stesso blocco di istruzioni
Iterazioni
39Programmazione Web - PHP: introduzione
![Page 40: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/40.jpg)
Sono utilizzate quando è necessario eseguire più volte lo stesso blocco di istruzioni
Iterazioni
40Programmazione Web - PHP: introduzione
![Page 41: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/41.jpg)
Il blocco <istruzioni> viene eseguito fino a quando <condizione> è vera
Ciclo whilewhile(<condizione>) <istruzioni>
41Programmazione Web - PHP: introduzione
![Page 42: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/42.jpg)
Il significato è esprimibile in termini di ciclo while come segue
Ciclo forfor(<istruzione1>; <condizione>; <istruzione2>) <istruzioni>
<istruzione1>;while(<condizione>) { <istruzioni> <istruzione2>;}
42Programmazione Web - PHP: introduzione
![Page 43: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/43.jpg)
Il significato è esprimibile in termini di ciclo while come segue
Ciclo forfor(<istruzione1>; <condizione>; <istruzione2>) <istruzioni>
<istruzione1>;while(<condizione>) { <istruzioni> <istruzione2>;}
43Programmazione Web - PHP: introduzione
![Page 44: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/44.jpg)
È simile al ciclo while, ma <condizione> viene testata dopo l’esecuzione di <istruzioni>
Ciclo do..whiledo <istruzioni>while (<condizione>)
44Programmazione Web - PHP: introduzione
![Page 45: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/45.jpg)
Il ciclo si ripete tante volte quanti sono gli elementi dell’array e all’interno del ciclo ogni volta è disponibile, nella variabile $valore, il valore dell’elemento corrispondente all’iterazione
Questa versione è particolarmente utile per gli array associativi; oltre al valore è presente anche la chiave dell’elemento, presente nella variabile $chiave
Ciclo foreachforeach(array as $valore)
istr
45Programmazione Web - PHP: introduzione
foreach(array as $chiave=>$valore)istr
![Page 46: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/46.jpg)
Funzioni
46Programmazione Web - PHP: introduzione
function nome_funzione ($arg1, $arg2) { // codice della funzione (corpo)
// l’istruzione return serve per restituire un valore// come risultato ed è opzionalereturn <risultato>;
}
![Page 47: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/47.jpg)
Funzioni con argomenti di default
47Programmazione Web - PHP: introduzione
function nome_funzione ($arg1, $arg2=“default”) { // codice della funzione (corpo)
return <risultato>;}
. . .
$ris1 = nome_funzione(“primo”,”secondo”); // senza l’uso del // default$ris2 = nome_funzione(“primo”); // con l’uso del default
![Page 48: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/48.jpg)
• Argomento della funzione date() = stringa che specifica il formato:
H = ore (in formato 24-ore)i= minutij = giorno del meseS = suffisso ordinale (tipicamente, th)F = nome del mese
Esempio: gestione di un ordine<body> <h1>Strumenti Musicali in Franciacorta</h1> <h2>Gestione Ordine<h2> <?php echo '<p>Ordine gestito alle ore '; echo date("H:i, jS F"); echo '. Grazie per aver scelto i nostri prodotti.</p>'; ?></body>
48Programmazione Web - PHP: introduzione
![Page 49: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/49.jpg)
Esempio: gestione di un ordine
49Programmazione Web - PHP: introduzione
![Page 50: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/50.jpg)
La visibilità (o scope) di una variabile $v è la porzione del codice in cui è visibile $v:
• Le variabili superglobali sono visibili ovunque nello script (es., $_GET, $_POST, $_SERVER)
• Le costanti sono visibili ovunque nello script• Le variabili globali sono visibili ovunque nello script, tranne
che nelle funzioni• Le variabili dichiarate globali nelle funzioni si riferiscono alle
omonime variabili dichiarate globali fuori delle funzioni• Le variabili dichiarate statiche in una funzione sono visibili
solo nella funzione ma mantengono il loro valore tra una chiamata e l’altra della funzione
• Le variabili locali create in una funzione sono visibili solo nelle funzione e scompaiono al termine della esecuzione della funzione
Visibilità
50Programmazione Web - PHP: introduzione
![Page 51: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/51.jpg)
Visibilità: esempio
51Programmazione Web - PHP: introduzione
$a = 1;function nome_funzione (){
global $a; // senza questa riga la funzione non stampa// niente
echo $a;}
. . .
nome_funzione();
![Page 52: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/52.jpg)
• Nel linguaggio PHP il concetto di classe è quello tradizionale dei linguaggi di programmazione ad oggetti
Classi e oggetti
52Programmazione Web - PHP: introduzione
![Page 53: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/53.jpg)
53
Esempio
• Le variabili di stato della classe saranno disponibili a tutti i metodi della classe stessa tramite l’uso del prefisso speciale $this->
Programmazione Web - PHP: introduzione
![Page 54: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/54.jpg)
• Una volta definita la struttura della classe, è possibile istanziare uno o più oggetti di quel tipo
• lasciando i valori di default• specificando nuovi parametri al momento
dell’istanziazione
Istanziazione
54Programmazione Web - PHP: introduzione
![Page 55: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/55.jpg)
• Dopo aver istanziato la classe, i metodi della classe possono essere invocati per andare a modificare le variabili di stato della classe stessa
• le invocazioni dei metodi su una istanza sono indipendenti dalle invocazioni di metodi su istanze diverse
Invocazione dei metodi di una classe
55Programmazione Web - PHP: introduzione
![Page 56: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/56.jpg)
• La gestione delle classi e della programmazione ad oggetti è stata enormemente potenziata nell’ultima versione di PHP (PHP 5)
• sono stati introdotti i modificatori di visibilità private, public e protected, su cui valgono le comuni regole della programmazione a oggetti
• sono stati introdotti i metodi _construct (nome univoco per il costruttore) e _destruct (nome univoco metodo distruttore)
• è possibile passare gli oggetti per riferimento e non per valore
PHP 5 e oggetti (I)
56Programmazione Web - PHP: introduzione
![Page 57: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/57.jpg)
• In PHP 5 è stato anche potenziato il meccanismo dell’ereditarietà (parola chiave extends)
• sono state introdotte le interfacce• è stato introdotto l’operatore instance of• è possibile definire metodi e classi come final• è stato introdotto l’uso di static per definire
proprietà e metodi statici
PHP 5 e oggetti (II)
57Programmazione Web - PHP: introduzione
![Page 58: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/58.jpg)
• PHP 5 ha introdotto un nome standardizzato per i costruttori, _construct
• se la classe viene rinominata, non è necessario modificare anche il nome del suo costruttore
• Una grossa novità in PHP 5 è l’introduzione del metodo distruttore, _destruct()
• utile per operazioni di pulizia, come l’eliminazione di file temporanei o la chiusura di connessioni a database (garbage collection)
• la garbage collection avviene nel momento in cui viene eliminato l’ultimo riferimento all’oggetto
Costruttori e distruttori
58Programmazione Web - PHP: introduzione
![Page 59: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/59.jpg)
Esempio
59Programmazione Web - PHP: introduzione
![Page 60: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/60.jpg)
• Grazie all’uso delle interfacce, viene superato il vincolo dell’ereditarietà da una singola classe; infatti una classe può implementare più interfacce
Interfacce
60Programmazione Web - PHP: introduzione
![Page 61: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/61.jpg)
• Viene utilizzato per verificare la classe di un oggetto
L’operatore instance of
61Programmazione Web - PHP: introduzione
![Page 62: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/62.jpg)
• Se un metodo è dichiarato final, non può essere effettuato per esso l’overload dalle classi che lo ereditano
• Se una classe è dichiarata come final, non può essere sottoposta al meccanismo dell’ereditarietà
Metodi e classi final
62Programmazione Web - PHP: introduzione
![Page 63: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/63.jpg)
Metodi e proprietà static
63Programmazione Web - PHP: introduzione
![Page 64: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/64.jpg)
• L’inclusione di codice PHP in altri file avviene tramite la funzione require(nome_file)
• Per evitare di includere un file più volte, si usa require_once
Riuso del codice PHP (I)
64
inclusione.php
main.php
Programmazione Web - PHP: introduzione
![Page 65: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/65.jpg)
Riuso del codice PHP (I)
65Programmazione Web - PHP: introduzione
![Page 66: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/66.jpg)
Riuso del codice PHP (II)
66
inclusione.php
main.php
header.php
footer.php
Programmazione Web - PHP: introduzione
![Page 67: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/67.jpg)
• Nelle ultime versioni del PHP non viene fatta nessuna distinzione tra l’uso di require e di include, entrambe le funzioni servono per includere file esterni e hanno la medesima sintassi• Le due funzioni in realtà si comportano in modo diverso solo nel caso in cui ci siano degli errori di inclusione del file
• include(nome_file) restituisce un warning, mentre lo script prosegue
• require(nome_file) segnala l’errore e blocca lo script
• entrambe le funzioni hanno l’estensione _once per evitare il caricamento multiplo dello stesso file
require vs include
67Programmazione Web - PHP: introduzione
![Page 68: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/68.jpg)
• Se definita, la funzione _autoload viene automaticamente chiamata qualora si stia cercando di istanziare una classe non ancora definita
La funzione _autoload
68Programmazione Web - PHP: introduzione
![Page 69: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/69.jpg)
Esempi: riuso del codice in PHP
Programmazione Web - PHP: introduzione
![Page 70: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/70.jpg)
70
Definizione di paragrafi (p)
Funzione che genera il codice XHTML di un paragrafo (tag <p>)
Programmazione Web - PHP: introduzione
![Page 71: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/71.jpg)
71
Definizione di intestazioni (h)
Funzione che genera il codice XHTML di una intestazione (tag <h*>, valore di default pari a 1)
Programmazione Web - PHP: introduzione
![Page 72: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/72.jpg)
72
Definizione di interruzioni di riga (br)
Funzione che genera il codice XHTML di un certo numero di interruzioni di riga (tag <br>, valore di default pari a 1)
Programmazione Web - PHP: introduzione
![Page 73: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/73.jpg)
73
Definizione di link (a)
Funzione che genera il codice XHTML di un link ipertestuale (tag <a>)
Programmazione Web - PHP: introduzione
![Page 74: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/74.jpg)
74
Definizione di link (img)
Funzione che genera il codice XHTML di una immagine (tag <img>)
Programmazione Web - PHP: introduzione
![Page 75: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/75.jpg)
75
Definizione di liste non ordinate (ul)
Funzione che genera il codice XHTML di una lista non ordinata (tag <ul> e <li>)
Analogo per le liste ordinate (tag <ol>)
Programmazione Web - PHP: introduzione
![Page 76: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/76.jpg)
76
Definizione di moduli (form)
Funzione che genera il codice XHTML di un modulo (tag <form>)
Programmazione Web - PHP: introduzione
![Page 77: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/77.jpg)
77
Definizione di campi in un modulo
Funzione che genera il codice XHTML di un pulsante di invio (submit)
Analogo per gli altri tipi di campi
Programmazione Web - PHP: introduzione
![Page 78: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/78.jpg)
78
Definizione di tabelle (table)
Funzione che genera il codice XHTML di una tabella (tag <table>)
Programmazione Web - PHP: introduzione
![Page 79: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/79.jpg)
79
Generazione veloce della pagina XHTML
Programmazione Web - PHP: introduzione
![Page 80: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/80.jpg)
80
Esempio
Programmazione Web - PHP: introduzione
![Page 81: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/81.jpg)
81
Esempio
Programmazione Web - PHP: introduzione
![Page 82: Programmazione Web PHP - Introduzione 1. PHP: Hypertext Preprocessor è un linguaggio di programmazione utilizzato prevalentemente per la programmazione.](https://reader035.fdocuments.net/reader035/viewer/2022070313/5542eb75497959361e8df185/html5/thumbnails/82.jpg)
• Gestione delle eccezioni con try/throw/catch
Altre novità in PHP 5
82Programmazione Web - PHP: introduzione