Les fonctions
Par Damien, mardi 1 mars 2005 à 20:46 :: PHP :: #11 :: rss
Une fonction peut être résumée à un sous-programme que l'on appelle depuis le programme principal.
PHP possède de nombreuses fonctions intégrées permettant d'effectuer des actions courantes. Toutefois, il est possible de définir ses propres fonctions afin de simplifier l'exécution de séries d'instructions répétitives, ce qui simplifie le code, et facilite sa mise à jour.
1- Déclaration d'une fonction
La définition d'une fonction s'appelle déclaration et peut se faire n'importe où dans le code grâce au mot-clé function.
function Nom_De_La_Fonction(type1 argument1, type2 argument2, ...) {
liste d'instructions
}
Les arguments sont les paramètres que l'on passe à la fonction. Il peut y en avoir un, plusieurs, ou même aucun (dans ce cas, on laisse les parenthèses vides). Les arguments peuvent être de simple variables, mais aussi des tableaux ou des objets. A noter qu'il est possible de donner une valeur par défaut à ces arguments.
La fonction peut renvoyer une valeur grâce au mot-clé return. Lorsque l'instruction return est rencontrée, la valeur de retour est envoyée au programme appelant et la fonction stoppée. Une fonction peut contenir plusieurs instructions return.
<?php function dire_texte($qui, $texte = 'Bonjour') { return false; }else{ return true; // fonction exécutée avec succès } } ?>
2- Appel de fonction
Pour exécuter une fonction, il suffit de faire appel à elle en lui passant les paramètres nécessaires.
Nom_De_La_Fonction(type1 argument1, type2 argument2, ...);
Certains arguments peuvent être optionnels, lorsqu' une valeur par défaut leur a été donnée. Dans l'exemple précédent, $qui est obligatoire, alors que $texte est optionnel.
<? // Passage des deux paramètres dire_texte("cher phpeur", "Bienvenue"); // affiche "Bienvenue cher phpeur" // Utilisation de la valeur par défaut du deuxième paramètre dire_texte("cher phpeur"); // affiche "Bonjour cher phpeur" ?>
En utilisant la valeur de retour :
<? // Utilisation de la valeur de retour if(!dire_texte("")){ // provoque l'affichage ci dessous } if(!dire_texte("cher phpeur")){ // affiche "Bonjour cher phpeur" } ?>
3- Précisions
Les variables locales et globales
Les variables extérieures à une fonction ne sont pas disponibles dans une fonction et, vice-versa (les variables utilisées dans une fonction ne sont pas répercutées à l'extérieur de la fonction). Une variable a donc une portée plus ou moins grande selon l'endroit où elle est définie.
Il existe plusieurs niveaux de définition de variable :
- Le niveau global, qui permet à une variable d'être visible dans la fonction et à l'extérieur de la fonction.
- Le niveau static permet de définir une variable locale à la fonction, qui persiste durant tout le temps d'exécution du script.
- Le niveau local, utilisé par défaut, permet de définir une variable locale classique.
<?php $chaine = 'Nombre de camions : '; function ajoute_camion($mode = '') { global $chaine; $nb++; // on incrémente le nombre de camions if($mode == "affiche") { } } ajoute_camion(); // nb == 1 ajoute_camion(); // nb == 2 ajoute_camion(); // nb == 3 ajoute_camion("affiche"); // affiche Nombre de camions : 4 ?>
Passage par référence
Dans les exemples précédents, nous avons vu comment passer des arguments à une fonction, nous avons utilisé le passage par valeur. Autrement dit, nous passions la valeur de la variable à la fonction.
Il existe une autre solution : le passage par référence. Dans ce cas, on passe la référence (adresse mémoire) de la variable à la fonction, ce qui permet de modifier sa valeur. Pour cela, il suffit simplement d'ajouter le signe "&" devant le paramètre de la fonction.
<?php function dire_texte($qui, &$texte) { $texte = "Bienvenue $qui"; } $chaine = "Bonjour "; dire_texte("cher phpeur", $chaine); ?>
Retourner plusieurs valeurs
Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus simple est d'utiliser un tableau.
Fonctions récursives
Les fonctions récursives sont des fonctions qui s'appellent elles-mêmes. Ce type de fonction se révèle indispensable pour parcourir une arborescence par exemple.
Prenons un exemple simple :
<?php function fonction_recursive($n=0) { $n++; echo "$n <br />"; if($n < 10){ // si n est inférieur à 10 on continue fonction_recursive($n); } } fonction_recursive(); // affiche les nb de 1 à 10 ?>

Commentaires
1. Le lundi 21 mars 2005 à 23:36, par zaz
2. Le samedi 11 juin 2005 à 21:47, par Nab
3. Le mercredi 7 septembre 2005 à 18:07, par Xrogaan
4. Le vendredi 11 mai 2007 à 18:09, par Gilles
5. Le samedi 23 juin 2007 à 17:48, par thierrydel1
6. Le mercredi 25 juillet 2007 à 17:59, par juch
7. Le mardi 14 août 2007 à 00:36, par Pedro
Ajouter un commentaire