Une fonction peut être définie en utilisant la syntaxe suivante :
Exemple 17-1. Définition 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 une définition 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 underscore, suivi
par un nombre quelconque de lettres, de nombres ou d'underscores.
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 Annexe R.
En PHP 3, les fonctions doivent être définies avant
qu'elles ne soient utilisées. Ce n'est plus le cas depuis PHP 4.
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 17-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 17-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 vis-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ée avec le nom utilisé dans leur déclaration,
y compris la casse.
PHP 3 ne supporte pas un nombre variable d'arguments (voir
valeurs par défaut
d'arguments pour plus d'informations).
Les deux sont supportés, depuis PHP 4 : voir
liste variable d'arguments de fonction et 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écursion
peuvent remplir la pile et ainsi, terminer le script courant.
Exemple 17-4. Fonctions récursives
<?php function recursion($a) { if ($a < 20) { echo "$a\n"; recursion($a + 1); } } ?>
|
|