Funzioni
Indice dei contenuti
Funzioni definite dall'utente
Una funzione può essere definita usando la seguente sintassi:
Example#1 Psuedo codice per dimostrare l'uso delle funzioni
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Funzione di esempio.\n";
return $retval;
}
?>
All'interno di una funzione può apparire qualunque codice PHP valido, persino altre funzioni e definizioni di classe.
In PHP 3, le funzioni devono essere definite prima di essere referenziate. Non esiste nessun requisito in PHP 4. Tranne quando una funzione è definita condizionalmente come illustrato nei due esempi seguenti.
Quando una funzione è definita in modo condizionale, come illustrato nei seguenti esempi, occorre che ne venga processata prima la definizione poi venga chiamata la funzione stessa.
Example#2 Funzioni condizionali
<?php
$makefoo = true;
/* Qui non possiamo chiamare foo()
poichè non esiste ancora,
ma possiamo chiamare bar() */
bar();
if ($makefoo) {
function foo()
{
echo "Io non esisto sino a quando il programma non ri raggiunge.\n";
}
}
/* Ora possiamo chiarame foo()
poichè $makefoo vale true */
if ($makefoo) foo();
function bar()
{
echo "Io esco immediatamente dop l'avvio del programma.\n";
}
?>
Example#3 Funzioni dentro a funzioni
<?php
function foo()
{
function bar()
{
echo "Io non esiste fino a quando non si esegue foo().\n";
}
}
/* Non possiamo chiamare bar()
poicheè non esiste ancora. */
foo();
/* Ora si può eseguire bar(),
l'elaborazione di foo()
l'ha resa accessibile. */
bar();
?>
Tutte le funzioni e le classi, in PHP, hanno visibilità globale - possono essere chiamate dall'esterno di una funzione anche se sono definite all'interno di questa e vice-versa.
PHP non supporta l'overloading di funzioni, non è possibile indefinire o ridefinire funzioni precedentemente dichiarate.
Nota: I nomi delle funzioni non distinguono tra maiuscolo e minuscolo, ma, solitamente, è buona norma richiamare le funzioni nel modo con cui sono state definite.
PHP 3 non supporta un numero variabile di argomenti per le funzioni, sebbene siano supportati gli argomenti di default (vedere Argomenti con valori di default per maggiori informazioni). PHP 4 li supporta entrambi: vedere Liste di argomenti a lunghezza variabile e i riferimenti alle funzioni func_num_args(), func_get_arg() e func_get_args() per maggiori informazioni.
In PHP è possibile utilizzare le chiamate ricorsive. Tuttavia si consiglia di evitare funzioni/metodi ricorsivi profondi oltre 100-200 livelli, potrebbero riempire lo stack e bloccare l'esecuzione dello script.
Example#4 Funzioni ricorsive
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>