PHP - Les fonctions

Noter ce cours :

Définition et présentation

Une fonction est un bloc de code PHP destiné généralement à être réutilisé plusieurs fois. Plutôt que d'écrire X fois le morceau de code, on le met dans une fonction, et c'est cette fonction que l'on appellera dès qu'on l'aura décidé. On pourra utiliser les fonctions pour par exemple afficher un texte bien défini (ce que nous allons voir plus bas) ou encore effectuer des calculs répétitifs en fonction de paramètres d'entrée (comme par exemple calculer une conversion en degrés C° => degrés fahrenheit, vous fournissez la valeur des degrés Celcius et la fonction vous retourne l'autre valeur. Dans ce cas, le paramètre sera la température d'entrée en degrés C°). Voici la syntaxe de base pour dire à PHP "ceci est une fonction, il faut la traiter comme telle" :

<?php
     
function mafonction()
     {

     }
?>

On constate que le premier mot est le mot function, il est obligatoire et signifie que le bloc traité par PHP sera une fonction. 

Une fonction comporte toujours des parenthèses.

Il existe deux grands types de fonctions : les fonctions qui retournent une valeur, et celles qui n'en retournent pas (on appelle ces fonctions des procédures).

Exemple de procédure affichant "bonjour tout le monde !" :

<?php
     
function hello_world()
     {
          echo 
'bonjour tout le monde !';
     }
?>

Pour afficher Bonjour tout le monde ! n'importe où dans votre code, vous n'aurez plus qu'à taper ceci :

<?php
     hello_world
(); //appelle la fonction "hello_world" qui va afficher "Bonjour tout le monde !"
?>

Les paramètres

Nous venons de voir l'exemple d'une procédure qui ne contenait aucun paramètre. Les paramètres sont des variables que l'on place entre les deux parenthèses. Ces paramètres servirons de données sur lesquelles effectuer la fonction. Généralement, les paramètres impliquent que l'on va retourner quelque chose (on aura donc de très grandes chances d'avoir des fonctions et non des procédures). Nous verrons plus loin que le passage par référence des paramètres (ne vous inquiétez pas si vous ne comprenez pas encore ce que je dis, vous le comprendrez en bas de cette page) permet de s'affranchir généralement du retour d'une valeur.

Exemple d'une fonction calculant le produit de deux nombres et retournant le résultat :

<?php
     
function produit($nombre1$nombre2)
     {
           return 
$nombre1 $nombre2;
     }
?>

Ici la fonction retournera le produit des deux nombres. Remarquez qu'on utilise le mot clé return pour renvoyer une valeur. Vous pouvez également utiliser le mot clé return pour stopper l'exécution de la fonction (en retournant une valeur). Tout ce qui se trouve après return ne sera pas exécuté.

Si vous souhaitez afficher le produit de 10 et 2 par exemple, vous pouvez faire ceci :

<?php
     
echo produit(102);
?>

Nous pouvons assigner des valeurs par défaut aux paramètres. Pourquoi assigner des valeurs par défaut ? c'est simple, assigner une valeur par défaut à un paramètre permet de se passer du passage du paramètre lorsque vous appelez la fonction (attention, ceci n'est pas général). Voici un exemple :

<?php
     function produit
($nombre1 10, $nombre2 2)
     {
           return $nombre1 * $nombre2;
     }
?>

Ici, nous assignons comme valeurs par défaut les nombres 10 et 2. Si nous appelons maintenant notre fonction comme ceci :

<?php
     
echo produit();
?>

Nous obtiendrons le même résultat que plus haut, car les deux paramètres ne sont pas obligatoires ici. Par contre attention, si vous renseignez un paramètre, il sera prioritaire, c'est à dire que si vous appelez la fonction comme ceci :

<?php
     
echo produit(52);
?>

Ici, on multipliera 5 par 2 et pas 10 par 2. Donner une valeur par défaut aux paramètres convient donc lorsque vous souhaitez ne pas être obligé de rajouter des paramètres lorsque vous dites à PHP "exécute-moi cette fonction". Attention avec l'exemple suivant :

<?php
     
echo produit(5);
?>

Il n'y a qu'un seul paramètre ! alors lequel va t-il remplacer ? Et bien il s'agit du premier paramètre. En effet, lorsque vous ne renseignez pas tous les paramètres, PHP va remplacer les paramètres dans l'ordre.

Passage de paramètres par référence

Le passage de paramètres par référence n'est pas compliqué en soit. Voyons un exemple simple et expliquons ensuite son fonctionnement :

<?php
     function ajouter_cinq
($nombre)
     {
           
$nombre += 5//équivalent de $nombre = $nombre + 5
           return $nombre;
     }

     
$mon_entier 15;
     echo 
ajouter_cinq($mon_entier); //affichera 20

     
echo $mon_entier//affichera 15
?>

Ici on effectue ce qu'on appelle un passage de paramètres par recopie. Ne vous prenez pas trop la tête avec ces termes, il s'agit d'un peu de culture générale ;) En fait cela veut dire que la variable que l'on va passer dans la fonction (ici $mon_entier) sera recopiée dans une autre variable nommée $nombre (qui prendra donc la même valeur). La fonction utilise ensuite cette variable $nombre pour faire ses traitements, et non la variable $mon_entier. C'est pourquoi lorsqu'on affiche le contenu de la variable $mon_entier après avoir appelé la fonction, on obtient toujours 15.

Voici maintenant la version avec le passage par référence :

<?php
     function ajouter_cinq
($nombre)
     {
           
$nombre += 5//équivalent de $nombre = $nombre + 5
           return $nombre;
     }

     
$mon_entier 15;
     echo 
ajouter_cinq(&$mon_entier); //affichera 20

     
echo $mon_entier//affichera 20
?>

L'avantage de ce type d'opération est que vous travaillez directement sur la variable d'origine, il n'y a pas de recopie et donc les performances peuvent être meilleures. Vous n'avez d'ailleurs plus forcément besoin de retourner une valeur. Prenons cet exemple qui fait exactement la même chose que le précédent :

<?php
     function ajouter_cinq
($nombre)
     {
           
$nombre += 5//équivalent de $nombre = $nombre + 5
     }

     
$mon_entier 15;
     
ajouter_cinq(&$mon_entier);

     echo 
$mon_entier//affichera 20
?>

Chapitre suivant

Les conditions

Vous avez aimé cet article intitulé PHP - Les fonctions ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels