Contrôler les valeurs de retour d’une fonction

Dans cette leçon, nous allons comprendre l’intérêt de la structure de contrôle return et apprendre à l’utiliser pour retourner le résultat d’une fonction.

 

Avantages et spécificités de l’instruction return

Jusqu’à présent, le seul moyen que nous avions d’avoir accès au résultat d’une fonction qu’on avait créée était d’afficher ce résultat en utilisant un echo dans la définition de la fonction lors de sa création.

Le problème de cette méthode est que nous n’avons aucun contrôle sur le résultat de la fonction : dès que l’on appelle la fonction en question, le echo à l’intérieur est exécuté et le résultat est immédiatement affiché.

La structure de contrôle return va nous permettre de demander à une fonction de retourner un résultat qu’on va ensuite pouvoir stocker dans une variable ou autre pour le manipuler.

Cela va être utile dans de nombreux cas puisqu’on voudra souvent récupérer le résultat d’une fonction pour effectuer d’autres calculs ou d’autres opérations avec celui-ci dans un script plutôt que simplement l’afficher.

Attention cependant : l’instruction return va terminer l’exécution d’une fonction, ce qui signifie qu’on placera généralement cette instruction en fin de fonction puisque le code suivant une instruction return dans une fonction ne sera jamais lu ni exécuté.

Pour illustrer cela, créons deux fonctions dont le rôle est de multiplier deux nombres entre eux et de renvoyer le résultat de la multiplication. La première fonction va utiliser un echo, la seconde utilisera plutôt return.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            /*Note : l'opérateur "*" a une priorité plus grande que "."
             *pas besoin de () ici donc pour faire le calcul*/
            function multecho(float $a, float $b){
                echo $a. ' * ' .$b. ' = ' .$a * $b. '<br>';
            }
            
            function multreturn(float $a, float $b){
                return $a. ' * ' .$b. ' = ' .$a * $b. '<br>';
            }
        
            multecho(2, 3);
            multreturn(4, 5);
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation de l'instruction return vs echo dans une fonction PHP

Ici, on utilise un echo pour afficher le résultat dans notre fonction multecho(). Le echo s’exécute lors de l’appel à la fonction et résultat est donc affiché immédiatement après l’appel à notre fonction. Ici, nous n’avons aucun contrôle sur le résultat puisque celui-ci est affiché automatiquement.

En revanche, on utilise return pour simplement retourner le résultat de notre fonction multreturn(). Ici, le résultat n’est pas affiché, il est simplement retourné par la fonction.

Cela explique le fait qu’aucun résultat ne s’affiche lorsqu’on appelle notre fonction multreturn(). Le résultat a bien été calculé et a bien été retourné, mais il attend qu’on en fasse quelque chose.

On va alors pouvoir placer ce résultat dans une variable pour ensuite l’utiliser pour effectuer différents calculs ailleurs dans notre script.

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            /*Note : l'opérateur "*" a une priorité plus grande que "."
             *pas besoin de () ici donc pour faire le calcul*/
            function multecho(float $a, float $b){
                echo $a. ' * ' .$b. ' = ' .$a * $b. '<br>';
            }
            
            function multreturn(float $a, float $b){
                return $a * $b;
            }
        
            multecho(2, 3);
            
            //On exécute multreturn() et on place le résultat dans $res
            $res = multreturn(4, 5);
            
            echo $res+= 2;
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Exemple d'utilisation de l'instruction return dans une fonction PHP

Ici, notre fonction multreturn () retourne le résultat de la multiplication de deux nombres. On place la valeur retournée dans une variable $res. On ajoute 2 à cette variable et on affiche le résultat final. Les opérations ne sont bien évidemment pas très intéressantes ici mais en pratique il va être très utile de pouvoir se servir d’une valeur retournée par une fonction.

 

La déclaration des types de valeurs de retour

Depuis PHP7, nous allons de façon similaire à la déclaration de type des arguments pouvoir déclarer les types de retour.

Les déclarations du type de retour vont permettre de spécifier le type de la valeur qui sera retournée par une fonction. On va ici pouvoir utiliser les mêmes types que les types pour les arguments vus dans la leçon précédente.

Notez que le typage strict affecte également les types de retour : si celui-ci est activé, alors la valeur retournée doit être du type attendu. Dans le cas contraire, une exception sera levée par le PHP. Nous étudierons les exceptions bien plus tard dans ce cours. Pour faire simple, vous pouvez pour le moment retenir qu’une exception est une erreur.

<?php declare(strict_types= 1);?>
<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP & MySQL</title>
        <meta charset="utf-8">
        <meta name="viewport"
          content="width=device-width, initial-scale=1, user-scalable=no">
        <link rel="stylesheet" href="cours.css">
    </head>
    
    <body>
        <h1>Titre principal</h1>
        <?php
            function multreturn($a, $b): int{
                return $a * $b;
            }
            
            echo multreturn(2, 4);
            echo '<br><br>';
            echo multreturn(2, 4.1);
        ?>
        <p>Un paragraphe</p>
    </body>
</html>

 

Le valeurs de retour avec return et le typage des valeurs dans les fonctions PHP

Dans le cas où le typage strict n’est pas activé (qui est le cas par défaut), si les valeurs retournées ne sont pas du type attendu alors elles seront transtypées, ce qui signifie que le PHP va essayer de transformer leur type pour qu’il corresponde au type attendu.

Valeurs de retour, typage strict et transtypage des valeurs en PHP

Résultat du transtypage des valeurs dans une fonction PHP

Laisser un commentaire