Manuale PHP
Indietro |  | Avanti

# Capitolo 17. Funzioni

# Funzioni definite dall'utente

Una funzione può essere definita usando la seguente sintassi:

Esempio 17-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.

Esempio 17-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"; } ?>`

Esempio 17-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.

Esempio 17-4. Funzioni ricorsive

`<?php function recursion($a) { if ($a < 20) { echo "$a\n"; recursion($a + 1); } } ?>`

Indietro | Partenza | Avanti
include_once() | Risali | Argomenti delle funzioni