PHP/Fonctions
Une page de Wikiversité.
| Chapitre 5 | |||
| Leçon : PHP | |||
|---|---|---|---|
| Chap. préc. : | Syntaxe du langage (avancé) | ||
| Chap. suiv. : | Classes | ||
En raison de limitations techniques, la typographie souhaitable du titre, « PHP : Fonctions
PHP/Fonctions », n'a pu être restituée correctement ci-dessus.
PHP permet bien entendu d'écrire ses propres fonctions. Notez bien que ce cours n'étant pas un cours d'algorithmique, il sera simplement expliquer comment utiliser les fonctions en PHP.
Sommaire |
[modifier] Déclaration de fonction
[modifier] Utilisation
Pour déclarer une fonction en PHP, il suffit d'utiliser le mot-clef function. Comme le langage n'est pas typé, une fonction peut retourner n'importe quel type de valeur (chaîne, entier…) ou ne rien retourner du tout. Enfin, ses arguments peuvent avoir des valeurs par défaut.
// foo retourne le résultat de la somme du deuxième paramètre et de 4. // Si aucun second paramètre n'est donné, la fonction utilisera la valeur 0 par défaut. function foo($arg1, $arg2 = 0) { print 'Fonction foo(' . $arg1 . ',' . $arg2 . ') donne : '; return $arg2+4; // tout ce qui suit ne sera jamais exécuté } //appel à la fonction print foo(1,3); //affichera: Fonction foo(1,3) donne 7 print foo(5); //affichera: Fonction foo(5,0) donne 4
Le principe de base est très simple à saisir.
Notez que lorsqu'une fonction arrive à un return, elle l'effectue puis se termine, même s'il y a d'autres instructions après.
[modifier] Portée des variables
Le problème de portée des variables est assez réduit en PHP. Une fonction n'a accès qu'à ses arguments, ses propres variables et aux variables globales importées statiquement (mot cle global). De ce fait, il y a peu de confusion.
Toujours suivant le même principe, les variables utilisées dans une fonction sont toutes détruites à sa sortie (les variables globales non, bien entendu).
Voici un exemple :
<? $valeur1=10; $valeur2=20; function exemple($valeur) { global $valeur1; // récupération de la valeur globale de $valeur1 $valeur3=5; $calcul=$valeur1+$valeur2+$valeur3+$valeur; // 10 + 5 + 2, $valeur2 n'ayant pas été définie comme valeur globale, la variable $valeur2 est donc vide. return $calcul; } echo exemple(2); // affiche 17 ?>
On peut aussi trouver un peu plus compliqué si vous utilisez 2 fichiers. L'un pour les variables, l'autre pour les traitements.
<?php //-- fichier 1 : les variables globales (mot clef '''global''') global $var1 = "Salut"; ?>
<?php //-- fichier 2 : les traitements echo "J'utilise ma variable globale : ".$GLOBALS['var1']; //-- Récupération via $GLOBALS ?>
[modifier] Références
Les références sont utiles lorsque l'on souhaite retourner plusieurs valeurs dans une fonction. On utilise alors le passage d'argument par référence, qui fait que quand une fonction modifie un argument, la valeur de la variable du programme principale change aussi.
Pour utiliser un argument en tant que référence, il suffit d'y mettre le symbole & devant, dans la déclaration de la fonction.
Un exemple concret devrait vous faire comprendre :
function foo(&$arg1, &$arg2, $arg3) { $arg1 = 4; $arg2 = 6 $arg3 = 8; } foo($var1, $var2, $var3); print $var1; //affichera 4 print $var2; //affichera 6 print $var3; //affichera NULL car $arg3 n'est pas une référence (pas de &)
[modifier] Les fonctions variables
On appelle "fonction variable" une fonction dont on ne peut prédire le nombre d'arguments. Ce genre de fonction pourra se réveler pratique pour exécuter certains codes répétitifs ou le programmeur n'a pas envie de recopier le nom de la fonction pour n valeurs.
Pour cela, il faut retenir deux fonctions importantes :
- func_num_args : permet de compter le nombre d'arguments (retourne true ou false).
- func_get_args : permet de récupérer la valeur d'un argument (retourne un tableau de valeur).
Ces deux fonctions ne peuvent s'utiliser qu'à l'intérieur d'une fonction; dans le cas contraire un message d'erreur s'affichera.
Exemple :
function afficher_variables () { $nb_args = func_num_args(); $list_args = func_get_args(); for ($i = 0; $i < $nb_args; $i++) { echo $list_args[$i].' '; } } afficher_variables('Je suis', 'un petit', 'homme vert', 'taratataata', 'c\'est moi!!'); // Et on peu en rajouter autant qu'on veut :)
Le code se comprend de lui-même. Il affichera : Je suis un petit homme vert taratataata c'est moi!!

