Chapitre suivantIndex des CoursChapitre précedentChapitre 9

Les fonctions

 

Les fonctions utilisateurs

une fonction peut être définie en utilisant la syntaxe suivante :

function foo ($arg_1, $arg_2, ..., $arg_n) {
echo "Exemple de fonction.\n";
return $retval;
} 

Tout code PHP correcte syntaxiquement peut apparaître dans une fonction et dans une définition de classe .

Toutes fonctions doit être préalablement définies avant d'être utilisées.

Les valeurs de retour

Les valeurs sont renvoyées en utilisant une instruction de retour optionnelle. Tous types de variables peuvent être renvoyés, tableau et objet compris.

function square ($num) {
return $num * $num;
}
echo square (4); // affiche la valeur '16'. 

Vous ne pouvez pas renvoyer plusieurs valeurs en même temps, mais vous pouvez obtenir un résultat identique en renvoyant un tableau.

function small_numbers() {
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers(); 

Les arguments

Des informations peuvent être passées à une fonction en utilisant un tableau d'arguments, dont chaque élément est séparé par une virgule. Un élément peut être une variable ou une constante.

PHP support le passage d'argument par valeur (méthode par défaut), par référence , et les valeurs par défaut des arguments . Une liste d'argument dont le nombre est variable ne fonctionne pas en PHP mais un résultat similaire peut être obtenu en utilisant un taleau.

function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
} 

Passage d'argument par référence

Par défaut, les arguments sont passés à la fonction par valeur (donc vous pouvez changer la valeur d'un argument dans la fonction, cela ne change pas sa valeur à l'extérieure de la fonction). Si vous voulez à aux fonctions de changer la valeur des arguments, vous devez passer ces arguments par référence.

Si vous voulez qu'un argument soit toujours passé par référence, vous pouvez ajouter un '&' devant l'argument dans la déclaration de la fonction :

function add_some_extra(&$string) {
$string .= 'et du texte supplémentaire.';
}
$str = 'Ceci est une phrase, ';
add_some_extra($str);
echo $str; // affiche 'Ceci est une phrase, et du texte supplémentaire.' 

Si vous souhaitez passer une variable par référence à une fonction mais de manière ponctuel, vous pouvez ajouter un '&' devant l'argument dans l'appel de la fonction:

function foo ($bar) {
$bar .= 'et du texte en plus.';
}
$str = 'Ceci est une phrase, ';
foo ($str);
echo $str; // affiche 'Ceci est une phrase, '
foo (&$str);
echo $str; // affiche 'Ceci est une phrase, et du texte en plus.' 

Valeur par défaut des arguments

Vous pouvez définir comme en C++ des valeurs par défaut pour les arguments de type scalaire :

function makecoffee ($type = "cappucino") {
return "Making a cup of $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso"); 

L'affiche de la fonction ci-dessus est :

Making a cup of cappucino.

Making a cup of espresso.

La valeur par défaut d'un argument doit obligatoirement être une constante, et ni une variable ou un membre d'une classe.

En PHP 4.0, il est aussi possible de spécifier qu'un argument n'est pas affecté, (unset) comme argument par défaut. Cela signifie que l'argument ne sera pas affecté, si aucune valeur n'est passée comme argument.

Il est à noter que vous utilisez les arguments par défaut, la valeur par défaut doit se trouver du côté droit du signe '='; sinon, cela ne fonctionnera pas. Considérons le code suivant :

function makeyogurt ($type = "acidophilus", $flavour) {
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // ne fonctionne pas correctement. 

L'affiche du code ci-dessus est le suivant :

Warning: Missing argument 2 in call to makeyogurt() in

/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41

Making a bowl of raspberry .

Maintenant comparons l'exemple suivant avec l'exemple suivant :

function makeyogurt ($flavour, $type = "acidophilus") {
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt ("raspberry"); // fonctionne correctement. 

L'affichage de cette exemple est le suivant :

Making a bowl of acidophilus raspberry.

 

old_function

L'instruction old_function vous permet de déclarer une fonction en utilisant une syntaxe du type PHP/FI2 (au détail prè que vous devez remplacer l'instruction 'function' par 'old_function'.

C'est une fonctionnalité relativement peu utile et elle ne devrait être utilisée que dans le cadre de conversion de PHP/FI2 vers PHP3

 

Mise en garde

Les fonctions déclarées comme old_function ne peuvent pas être appelée à partir du code interne du PHP. Cela signifie, par exemple, que vous ne pouvez pas les utiliser avec des fonctions comme usort() , array_walk() , ou register_shutdown_function() . Vous pouvez contourner ce problème en écrivant un wrapper pour appeler les old_function.

 

Chapitre précedentIndex des CoursChapitre suivant

Révisé le :23-Jan-2008| ©2008 www.technologuepro.com