Semaine 2 - Jour 1 : Fonctions

Les Fonctions en PHP

Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Les fonctions évitent la répétition de code et rendent votre programme plus organisé et maintenable.

Avantages des fonctions :
• Réutilisabilité : écrire une fois, utiliser plusieurs fois
• Organisation : découper le code en petites parties logiques
• Maintenance : modifier à un seul endroit
• Lisibilité : code plus clair avec des noms de fonctions explicites

1. Déclaration de Fonctions

Créer et appeler une fonction :

<?php
// Déclaration d'une fonction simple
function direBonjour() {
    echo "Bonjour le monde !";
}

// Appel de la fonction
direBonjour(); // Bonjour le monde !

// Fonction avec paramètres
function saluer($nom) {
    echo "Bonjour " . $nom . " !";
}

saluer("Alice"); // Bonjour Alice !
saluer("Bob"); // Bonjour Bob !

// Plusieurs paramètres
function presenter($prenom, $age) {
    echo "Je m'appelle " . $prenom . " et j'ai " . $age . " ans";
}

presenter("Marie", 25);
?>
Résultat :
Bonjour le monde !
Bonjour Alice !
Bonjour Bob !
Je m'appelle Marie et j'ai 25 ans

2. Valeurs de Retour

Retourner une valeur avec return :

<?php
// Fonction qui retourne un résultat
function additionner($a, $b) {
    return $a + $b;
}

$resultat = additionner(5, 3);
echo $resultat; // 8

// Utiliser directement le résultat
echo additionner(10, 20); // 30

// Fonction avec condition
function estMajeur($age) {
    if ($age >= 18) {
        return true;
    } else {
        return false;
    }
}

if (estMajeur(20)) {
    echo "Accès autorisé";
}
?>
Résultat :
8
30
Accès autorisé

3. Paramètres par Défaut

Définir des valeurs par défaut pour les paramètres :

<?php
// Paramètre avec valeur par défaut
function saluerAvecPolitesse($nom, $titre = "M./Mme") {
    echo "Bonjour " . $titre . " " . $nom;
}

saluerAvecPolitesse("Dupont"); // Bonjour M./Mme Dupont
saluerAvecPolitesse("Martin", "Dr."); // Bonjour Dr. Martin

// Calculer le prix TTC
function calculerPrixTTC($prixHT, $tauxTVA = 0.20) {
    return $prixHT * (1 + $tauxTVA);
}

echo calculerPrixTTC(100); // 120 (TVA 20%)
echo calculerPrixTTC(100, 0.055); // 105.5 (TVA 5.5%)

// Plusieurs paramètres par défaut
function creerUtilisateur($nom, $role = "user", $actif = true) {
    return [
        "nom" => $nom,
        "role" => $role,
        "actif" => $actif
    ];
}

print_r(creerUtilisateur("Alice"));
?>
Bonne pratique : Les paramètres par défaut doivent être placés APRÈS les paramètres obligatoires.

4. Portée (Scope) & Fonctions Anonymes

Variables locales vs globales :

<?php
// Portée locale
$x = 10; // Variable globale

function tester() {
    $y = 5; // Variable locale
    echo $y; // 5 (fonctionne)
    // echo $x; // Erreur ! $x n'existe pas ici
}

// Utiliser une variable globale
function utiliserGlobale() {
    global $x;
    echo $x; // 10
}

// Fonction anonyme (closure)
$multiplier = function($n) {
    return $n * 2;
};

echo $multiplier(5); // 10

// Fonction fléchée (PHP 7.4+)
$carre = fn($n) => $n * $n;
echo $carre(4); // 16
?>
Résultat :
5
10
10
16

Exemples Pratiques

<?php
// Exemple 1 : Calculatrice
function calculer($a, $b, $operation) {
    switch ($operation) {
        case "+":
            return $a + $b;
        case "-":
            return $a - $b;
        case "*":
            return $a * $b;
        case "/":
            return $b != 0 ? $a / $b : "Division par zéro !";
        default:
            return "Opération invalide";
    }
}

echo calculer(10, 5, "+"); // 15
echo calculer(10, 5, "-"); // 5
echo calculer(10, 5, "*"); // 50
echo calculer(10, 5, "/"); // 2

// Exemple 2 : Validation email
function validerEmail($email) {
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return true;
    }
    return false;
}

$email = "test@example.com";
echo validerEmail($email) ? "Email valide" : "Email invalide";

// Exemple 3 : Générer un mot de passe aléatoire
function genererMotDePasse($longueur = 8) {
    $caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $mdp = "";
    for ($i = 0; $i < $longueur; $i++) {
        $mdp .= $caracteres[rand(0, strlen($caracteres) - 1)];
    }
    return $mdp;
}

echo genererMotDePasse(); // Ex: aB3xK9zL
echo genererMotDePasse(12); // Ex: xY8mN2pQ5rT9
?>

Erreurs Courantes

// ❌ ERREUR : Oublier de retourner une valeur
function addition($a, $b) {
    $resultat = $a + $b;
    // Oubli du return !
}
$x = addition(5, 3); // $x = null

// ✅ CORRECT
function addition($a, $b) {
    return $a + $b;
}

// ❌ ERREUR : Mauvais ordre des paramètres par défaut
function test($a = 10, $b) { // Erreur !

// ✅ CORRECT : Paramètres par défaut à la fin
function test($b, $a = 10) {
Froggiesplaining :


Objectifs de ce cours :
✅ Comprendre ce qu'est une fonction et pourquoi l'utiliser
✅ Savoir déclarer une fonction avec des paramètres
✅ Utiliser return pour retourner des valeurs
✅ Définir des valeurs par défaut pour les paramètres
✅ Comprendre la portée (scope) des variables

Points clés à retenir :
• Une fonction = bloc de code réutilisable avec un nom
function nomFonction($param1, $param2) { ... }
return : renvoie une valeur et arrête l'exécution de la fonction
• Paramètres par défaut : function test($a, $b = 10) (à la fin !)
• Variables locales : existent uniquement dans la fonction
• Variables globales : utilisez global $variable pour y accéder
• Fonctions anonymes : $fn = function($x) { return $x * 2; };
• Fonctions fléchées (PHP 7.4+) : $fn = fn($x) => $x * 2;
• Nommez vos fonctions de façon explicite : calculerPrixTTC() plutôt que calcul()

Exercice pratique :
1. Créez un fichier fonctions.php
2. Créez une fonction aire_rectangle($longueur, $largeur) qui retourne l'aire
3. Créez une fonction estPair($nombre) qui retourne true si le nombre est pair
4. Créez une fonction afficherTableau($tableau, $separateur = ", ") qui affiche les éléments
5. Testez toutes vos fonctions avec différentes valeurs
6. (Bonus) Créez une fonction moyenne(...$notes) qui calcule la moyenne de notes

Froggie explain

GitHub - eCrea