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]*.

Astuce

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 ($makefoofoo();

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