ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | PHP | Espressioni | Comandi | Libreria | Form | Cookie | Database | Config | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial PHP
Comandi
Inclusione di file
Funzioni


<<< Funzioni

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
ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com