PHP ne fait pas de différence entre les fonctions (qui retournent une valeur) et les procédures (qui ne retournent pas de valeur). Ces 2 types de bloc de code réutilisable sont traités de la même façon : par une fonction qui va renvoyer ou pas quelque chose.
Pour qu'une fonction retourne une valeur il faut employer le mot clé return, suivi de la valeur à renvoyer.
La valeur de retour est à comprendre au sens large du terme : valeur littérale, valeur d'une variable, valeur d'une expression, objet. N'importe quel type de données peut être : numérique, booléen, chaîne de caractères, tableau, objets.
return ne peut renvoyer qu'une seule valeur de retour à la fois. Pour renvoyer plusieurs valeurs avec un même return, il faut renvoyer un tableau comme valeur de retour.
On peut mettre autant de return dans le corps d'une fonction que nécessaire. Quand l'interpréteur PHP rencontre return, il arrête immédiatement l'exécution du code de la fonction et passe à l'exécution de l'instruction qui suit l'appel de la fonction.
Le code suivant est la fonction afficher, modifiée pour qu'elle retourne du code HTML.
function afficher($texte, $titre, $coul = '#FFFF00') {
if ($texte == '' && $titre == '') {
return '';
}
if (is_numeric($coul)) {
$coul = '#'.dechex($coul);
}
$html = '';
if ($titre != '') {
$html = '<h3 style="background:'.$coul.'">';
$html .= $titre.'</h3>';
}
if ($texte == '') {
return $html;
}
return $html.'<p>'.$texte.'</p>';
}
La fonction commence par tester la valeur des paramètres $texte et $titre.
Si ils ont une valeur vide la fonction renvoie une valeur vide car il
n'y a rien à afficher (donc fin de la fonction).
Le test
suivant sur la valeur du paramètre $coul
a déjà été vu.
Nous avons ensuite l'initialisation de la
variable $html qui contiendra la valeur
de retour.
Puis, si le paramètre $titre
contient bien un titre, le code HTML correspondant à l'affichage de
ce titre est généré dans $html.
Ensuite, si le paramètre $texte est
vide, la variable $html est retournée
(donc fin de la fonction).
Finalement, le code HTML
correspond au texte est concaténé à la variable $html
et la valeur de cette expression est renvoyée.
Bien sûr l'appel de la fonction doit être modifié pour récupèrer la valeur renvoyée par la fonction (voir l'exemple suivant)
Modifiez la fonction calculer de l'exercice précédent pour qu'elle renvoie la valeur calculée au lieu de l'afficher. Mettez en place la vérification des paramètres reçus : le 1er paramètre doit être '+' ou '*', les paramètres suivants doivent être des nombres. Si la vérification est négative, un message d'erreur (chaîne de caractères) doit être retourné.