Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARCHITETTURA
1) Il browser richiede al server un documento con estensione .php;
2) Il server invia il documento al modulo PHP;
3) Il modulo PHP estrae la porzione di codice, interpreta lo script e produce un output che viene inviato
indietro, includendo anche ciò che non è codice PHP;
4) Il server risponde alla richiesta del browser inviandogli l’output del modulo PHP.
I MESSAGGI DI ERRORE
In fase di sviluppo è utile visualizzare dei messaggi di errore al fine di individuare problemi nell’applicazione, è
importante però disattivare questi messaggi in fase di produzione per ragioni estetiche ma anche e
soprattutto di sicurezza (potrebbero rivelare dettagli e informazioni riservate).
Per attivare/disattivare i messaggi di errore in fase di produzione si usa:
display_errors <valore> valore: stdout/stderr
Esiste poi il parametro <display_startup_error> che mostra gli errori in fase di avvio dello script
ERRORI PHP:
Il parametro utilizzato per mostrare errori è error_reporting <integer>. Tali errori, identificabili da un valore
intero, possono essere anche identificati da costanti:
E_ERROR 1 Riferimento ad errori veri e propri – script interrotto
E_PARSE 4 Riferimento ad errori di sintassi – script non eseguito
E_WARNING 2 Messaggi di allerta – script non interrotto
E_NOTICE 8 Messaggi di avviso – script non interrotto
E_ALL 32767 Tutti i messaggi di errore
Nel caso in cui non posso modificare il php.ini – carattere globale - come nel caso di utilizzo del php su un
servizio di hosting è possibile usare ini_set(“error_reporting”; <integer>)
STAMPA
Tutto ciò che viene stampato in output dallo script PHP diventa il contenuto del messaggio HTTP che il server
invia al client.
Per stampare in output tali messaggi si usano i costrutti echo (più usato) e print, utilizzabili anche senza
parentesi (es. echo/print “ciao mondo”)
Echo: - non restituisce alcune valore
- Accetta più argomenti separati da virgole (es. echo ‘ciao’, ’a’, ’tutti’)
Può essere abbreviato: <?=$var?> equivale a <?php echo $var; ?>
Print: - restituisce sempre 1
- Accetta un solo argomento
- Non funziona con la virgola nel caso delle concatenazioni
Esistono poi funzioni che permettono di stampare l’output in maniera formattata, queste sono printf e sprintf
Printf – permette di specificare un formato
Sprintf – restituisce il valore di printf ma non stampa
Altre funzioni di stampa:
var_dump stampa in output il tipo della variabile e il suo contenuto
print_r stampa il contenuto ma non il tipo
gettype stampa soltanto il tipo della variabile
COMMENTI
Esistono vari modi per inserire commenti all’interno di uno script PHP.
I commenti su singola linea si hanno con
//
#
Mentre /* … */ permette il commento su più linee
SCRIVERE IN PHP
I nomi di classi, funzioni definite dall’utente, costrutti predefiniti e alcune parole chiave(while, class, echo…)
sono case insensitive.
Altre parti del linguaggio, come le varabili, sono case sensitive.
LE VARIABILI IN PHP
Le variabili in PHP:
sono rappresentate dal simbolo del dollaro ($) seguito dal nome della variabile
Iniziano con lettera o un underscore (_) seguito da lettere, numero, underscore e caratteri ASCII
sono case-sensitive
non necessitano di dichiarazione
I TIPI DI VARIABILE
La mancanza di una dichiarazione, fa si che il linguaggio venga tipato in maniera dinamica, ovvero la variabile
prende il tipo del suo contenuto e può essere soggetta ad una conversione automatica di tipo
Esistono 8 tipi di dato:
4 tipi scalari - assumono un solo valore: interi, numeri in virgola mobile, booleani e stringhe
2 tipi composti: array e oggetti
2 tipi speciali:
- null - la variabile non ha valore
- risorse - tipi assegnati a risorse come file, connessioni di rete…
Il tipo di una variabile può essere cambiato in un qualsiasi momento: è possibile assegnare ad una stessa
variabile prima un valore intero, poi una stringa e successivamente un numero in virgola mobile
Le variabili all’interno di una stringa racchiusa da virgolette doppie (“”) vengono espanse, verrà quindi
mostrato il loro valore
INIZIALIZZAZIONE DI UNA VARIABILE
Le variabili devono essere inizializzate attraverso l’operatore di assegnamento “0”:
$A = 1 numero
$B = “2” stringa
$C = ($A + $B) somma – conversione automatica della striga in numeri
$D = ($A . $B) concatenazione di stringhe – Operatore “.”
Per verificare se una variabile sia stata inizializzata si usa la funzione isset()
Qualora le variabili non siano inizializzate assumono dei valori predefiniti, quali:
Numero 0
Stringhe stringa vuota
Booleano false
LE VARIABILI VARIABILI
In PHP è possibile utilizzare il valore di una variabile per definire il nome di un’altra variabile
Es. $foo = “bar”
$$foo = “ciao”
Dopo la seconda istruzione, si ha una variabile $bar che contiene il calore “ciao”
ASSEGNAMENTI
Nel caso dell’assegnamento per valore, o by value, si ha una copia, e non un collegamento, del valore di una
variabile in una nuova variabile.
Di conseguenza le modifiche di una delle variabili non influiscono sull’altra variabile
Es. $A = 1
$B = $A
$A= 3 //$B vale comunque 1
Tale assegnamento non viene utilizzato per gli oggetti, dove si ha un assegnamento per riferimento.
L’assegnamento per riferimento permette, invece, di creare un vero e proprio collegamento attraverso il
simbolo “&”
Es. $nero = & $bianco Le variabili $nero e $bianco fanno riferimento alla stessa zona di memoria,
quindi modificando una variabile, modifico anche l’altra.
Per distruggere delle variabile, eliminandole completamente dalla memoria e dall’ambiente PHP si usa la
funzione unset ( <variabile> )
NB eseguendo unset($bianco) non si elimina anche $nero
CAMPO DI VISIBILITÀ
In PHP esistono quattro campi di visibilità per le variabili:
Locale (ad una funzione): una variabile dichiarata in una funzione che viene vista soltanto all’interno
della funzione stessa e in eventuali funzioni annidate (come i parametri di una funzione).
Globale: una variabile dichiarata fuori da una funzione visibile ovunque all’interno del codice PHP ma non
all’interno delle funzioni salvo che non si rende accessibile attraverso la funzione global $NomeVariabile.
Statico: una variabile visibile sono nella funzione che conservano il loro valore tra chiamate successive
della funzione (dichiarate con static).
SEQUENZE DI ESCAPE
Sequenze di caratteri che possiamo inserire in stringhe contenute da virgolette doppie cominciano con il
backslash (\) e vengono sostituite con caratteri speciali
\n newline (nuova riga)
\r carriage return (ritorno a capo)
\t carattere di tabulazione (TAB)
\$ carattere dollaro ($)
\” carattere doppi apici (“)
\\ carattere backslash (\)
PHP fornisce inoltre una funzione che permette di convertire tutti i caratteri nella relativa frequenza di escape
htmlspecialchars()
COSTANTI
In PHP è possibile definire delle costanti che possono contenere solo valori scalari
Sintassi: define (‘NomeCostante’, ‘Valore’);
echo NomeCostante senza usare $