|
Sebbene molte operazioni vengano svolte direttamente all'interno delle pagine, è possibile definire delle funzioni per
automatizzare le operazioni più ripetitive. Notare che solitamente le funzioni vengono poste in un file a parte ed incluse
nel file principale dell'applicazione con require.
Una funzione in PHP è composta da una intestazione e da un corpo. L'intestazione è composta dalla parola chiave
Function seguita dal nome della funzione (un identificatore) e una lista di parametri (nomi di variabili), racchiusi tra
parentesi e separate da virgole. Il corpo è una sequenza di comandi tra parentesi graffe. Tra i comandi che possono
trovarsi nel corpo della funzione si può utilizzare il comando return che deve essere seguito da una espressione.
Questo comando termina l'esecuzione della funzione e fa in modo che venga ritornato al chiamante il valore risultante
dall'espressione.
ATTENZIONE: Le funzioni devono essere sempre dichiarate prima di essere usate.
Per esempio:
Function sum($a, $b) {
return $a + $b ;
}
echo "4 + 7 = ". sum(4,7);
=> 4 + 7 = 11
In una funzione possono essere utilizzate delle variabili, che vengono automaticamente considerate locali alla funzione.
Notare attentamente che le variabili esterne, utilizzate al di fuori della funzione, pagina non sono accessibili se non
vengono importate esplicitamente con il comando globals. Le variabili locali di una funzione sono temporanee, nel
senso che alla fine della chiamata della funzione vengono perdute. Possono però essere rese persistenti tra una chiamata
e l'altra utilizzando il dichiaratore static. Per esempio:
Function f() {
$l = 1;
static $s = 1;
print "\nGlobale non importata: g=$g\n";
global $g;
print "Globale importata: g=$g\n";
++$l ; ++$s;
print "Variabile locale: l=$l\n";
print "Variabile locale statica: s=$s\n";
}
$g = "Hello"; f();
$g = "World"; f();
=> Globale non importata: g=
=> Globale importata: g=Hello
=> Variabile locale: l=2
=> Variabile locale statica: s=2
=> Globale non importata: g=
=> Globale importata: g=World
=> Variabile locale: l=2
=> Variabile locale statica: s=3
NOTA: le variabili globali sono comunque accessibili dalle funzioni tramite l'array associativo GLOBALS usando come
chiave il nome della variabile. Inoltre, se è attivata l'opzione track_vars (opzione dal file di configurazione
php.ini, vedere paragrafo 6.7), è possibile accedere alle informazioni provenienti dal browser tramite operazioni
GET, POST e COOKIE, che sono contenute negli array associativi: $HTTP_GET_VARS,
$HTTP_POST_VARS, $HTTP_COOKIE_VARS. Notare comunque che le variabili provenienti dal browser vengono
comunque rese disponibili tra le variabili globali; i tre array appena indicati servono a distinguere tra i tre tipi di
informazioni. Normalmente una variabile passata come COOKIE sovrascrive una variabile passata come POST, e una
variabile passata come POST sovrascrive una variabile passata tramite GET. La direttiva gpc_order permette di
cambiare questo comportamento (vedi paragrafo 6.7).
Le funzioni normalmente richiedono un numero di argomenti fisso, pari al numero specificato nella lista tra parentesi
dell'intestazione della funzione. I parametri sono passati per valore (ovvero viene passata una copia della valore
calcolato nella espressione chiamante). Un parametro può essere passato per riferimento aggiungendo il prefisso & nella
intestazione della funzione. Inoltre i parametri possono assumere valori predefiniti, permettendo così ad una funzione di
essere chiamata con meno argomenti di quelli specificati. Gli argomenti mancanti verranno sostituiti con il valore
predefinito. Esempio:
Function inc( &$ref, $val=1) {
$ref += $val;
}
$v = 1;
inc($v);
print "v=$v\n";
=> v=2
inc($v,2);
print "v=$v\n";
=> v=4
|