Les fonctions d�finies par l'utilisateur
Une fonction peut �tre d�finie en utilisant la syntaxe suivante :
Exemple #1 Pseudo code pour illustrer l'usage d'une fonction
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Exemple de fonction.\n";
return $retval;
}
?>
Tout code PHP, correct syntaxiquement, peut appara�tre dans une fonction et dans des d�finitions de classe.
Les noms de fonctions suivent les m�mes r�gles que les autres labels en PHP. Un nom de fonction valide commence par une lettre ou un soulign�, suivi par un nombre quelconque de lettres, de nombres ou de soulign�s. Ces r�gles peuvent �tre repr�sent�es par l'expression rationnelle suivante : [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.
Vous pourriez �galement avoir besoin de jeter un oeil sur Guide de nommage de l'espace utilisateur.
Les fonctions n'ont pas besoin d'�tre d�finies avant d'�tre utilis�es, SAUF lorsqu'une fonction est d�finie conditionnellement, comme montr� dans les deux exemples suivants.
Lorsqu'une fonction est d�finie de mani�re conditionnelle, comme dans les exemples ci-dessous, leur d�finition doit pr�c�der leur utilisation.
Exemple #2 Fonctions conditionnelles
<?php
$makefoo = true;
/* Impossible d'appeler foo() ici,
car cette fonction n'existe pas.
Mais nous pouvons utiliser bar() */
bar();
if ($makefoo) {
function foo()
{
echo "Je n'existe pas tant que le programme n'est pas pass� ici.\n";
}
}
/* Maitenant, nous pouvons appeler foo()
car $makefoo est maintenant vrai */
if ($makefoo) foo();
function bar()
{
echo "J'existe d�s de d�but du programme.\n";
}
?>
Exemple #3 Fonctions dans une autre fonction
<?php
function foo()
{
function bar()
{
echo "Je n'existe pas tant que foo() n'est pas appel�.\n";
}
}
/* Impossible d'appeler bar() ici
car il n'existe pas. */
foo();
/* Maintenant, nous pouvons appeler bar(),
car l'utilisation de foo() l'a rendu
accessible. */
bar();
?>
Toutes les fonctions et classes en PHP ont une port�e globale - elles peuvent �tre appel�es � l'ext�rieur d'une fonction si elles ont �t� d�finies � l'int�rieur et vice-versa.
PHP ne supporte pas le surchargement de fonction, ni la destruction ou la red�finition de fonctions d�j� d�clar�es.
Note: Les noms de fonctions sont insensibles � la casse, et il est g�n�ralement admis que les fonctions doivent �tre appel�es avec le nom utilis� dans leur d�claration, y compris la casse.
Les deux ( liste variable d'arguments de fonction et valeurs par d�faut d'arguments) sont support�s : voir les fonctions de r�f�rences que sont func_num_args(), func_get_arg(), et func_get_args() pour plus d'informations.
Il est possible d'appeler des fonctions r�cursives en PHP. Cependant, les appels de m�thodes/fonctions r�cursives avec 100-200 degr�s de r�cursivit� peuvent remplir la pile et ainsi, terminer le script courant.
Exemple #4 Fonctions r�cursives
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
recursion(3);
?>
L'exemple ci-dessus va afficher :
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19