Fonctions
Pourquoi créer des fonctions ?
Si tu as du code qui revient souvent — formater un prix, vérifier un email — tu peux le mettre dans une fonction et l'appeler autant de fois que besoin.
Avantages :
- Pas de répétition : code écrit une seule fois.
- Facile à modifier : change la fonction, tout le site est mis à jour.
- Lisibilité : le code principal reste court et clair.
Définir une fonction
Utilise le mot-clé function, suivi du nom et du code entre accolades.
// Définir la fonction (on lui donne un nom et un corps)
function direBonjour() {
echo "Bonjour !";
}
// Appeler la fonction (déclencher son exécution)
direBonjour(); // Bonjour !
direBonjour(); // Bonjour !
direBonjour(); // Bonjour !
Définir vs appeler :
function direBonjour() { ... }— crée la fonction. Rien ne s'exécute encore.direBonjour();— exécute la fonction.
Tu peux appeler la même fonction autant de fois que tu veux.
Les paramètres — personnaliser la fonction
Sans paramètres, la fonction fait toujours la même chose. Avec des paramètres, tu lui passes des valeurs qui changent le résultat.
// La fonction attend un paramètre : $prenom
function saluer($prenom) {
echo "Bonjour, $prenom !";
}
// On lui passe des valeurs différentes à chaque appel
saluer("Marie"); // Bonjour, Marie !
saluer("Thomas"); // Bonjour, Thomas !
$prenom est le paramètre. Il prend la valeur passée à l'appel ("Marie", puis "Thomas"). C'est une variable locale.
Plusieurs paramètres possibles :
function presenter($prenom, $age, $ville) {
echo "Je m'appelle $prenom, j'ai $age ans et j'habite à $ville.";
}
presenter("Marie", 28, "Paris");
// Je m'appelle Marie, j'ai 28 ans et j'habite à Paris.
Les valeurs passées doivent être dans le même ordre que les paramètres définis.
Valeurs par défaut
Un paramètre peut avoir une valeur par défaut. Si on ne passe rien, PHP utilise cette valeur.
function saluer($prenom = "visiteur") {
echo "Bonjour, $prenom !";
}
saluer("Marie"); // Bonjour, Marie !
saluer(); // Bonjour, visiteur ! ← valeur par défaut utilisée
Utilisateur connecté ? On passe le prénom. Pas connecté ? La fonction dit quand même quelque chose.
return — récupérer un résultat
Nos fonctions affichaient directement. Mais souvent, on veut qu'une fonction calcule quelque chose et renvoie le résultat pour l'utiliser ailleurs.
echo dans une fonction = affiche immédiatement. return = renvoie la valeur pour qu'on en fasse ce qu'on veut.
function additionner($a, $b) {
return $a + $b; // renvoie le résultat, ne l'affiche pas
}
// On peut stocker le résultat dans une variable
$resultat = additionner(3, 7);
echo $resultat; // 10
// Ou l'utiliser directement dans une expression
echo additionner(5, 5) * 2; // 20
// Ou l'intégrer dans du texte
echo "La somme est : " . additionner(4, 6);
Avec return, la fonction s'arrête et renvoie la valeur. Tu peux l'afficher, la stocker, la multiplier, la passer ailleurs...
Sans return, la fonction retourne null. Si tu t'attends à un résultat et qu'il ne vient pas, vérifie que tu n'as pas oublié return.
La portée des variables — l'isolement des fonctions
Les fonctions vivent dans leur propre bulle. Une variable créée dehors n'existe pas dedans, et vice versa. C'est la portée (scope).
$message = "Bonjour"; // variable définie en dehors
function tester() {
// $message n'est pas accessible ici !
echo $message; // Avertissement : variable indéfinie
}
tester(); // Rien — $message est inaccessible dans la fonction
Solution : passer la valeur en paramètre.
$message = "Bonjour";
function afficher($texte) {
echo $texte; // ça fonctionne, car on l'a passé en paramètre
}
afficher($message); // Bonjour
PHP a global pour accéder aux variables extérieures, mais c'est une mauvaise pratique. Toujours passer les valeurs en paramètre — code plus propre, plus facile à déboguer.
Cas pratique : formater un prix
Exemple concret : formater un prix. Au lieu de répéter le code partout, une fonction fait le travail.
function formatPrix($prix, $devise = "€") {
// number_format : 2 décimales, virgule pour les centimes, espace pour les milliers
return number_format($prix, 2, ",", " ") . " $devise";
}
echo formatPrix(1234.5); // 1 234,50 €
echo formatPrix(99.9, "$"); // 99,90 $
echo formatPrix(7); // 7,00 €
1 234,50 € 99,90 $ 7,00 €
Partout dans la boutique, appelle juste formatPrix($prix). Tu veux changer le format ? Modifie la fonction une fois. Tout le site est mis à jour.
function nom() { }pour définir une fonction — elle n'est pas encore exécutéenom();pour appeler (exécuter) une fonction- Les paramètres permettent de passer des valeurs à la fonction
- Les valeurs par défaut s'appliquent si on n'en passe pas
returnrenvoie une valeur qu'on peut utiliser ailleurs — sansreturn, la fonction retournenull- Les variables dans une fonction sont locales — elles n'existent pas à l'extérieur
- Passe toujours les données dont la fonction a besoin via les paramètres