📚 Fiche Résumé - Séance 3 : Fonctions et Exceptions en PHP

🎯 Objectifs de la séance

đź”§ 1. Les fonctions en PHP

Qu'est-ce qu'une fonction ?

Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle permet d'éviter la duplication de code.

Fonction sans paramètres

<?php
function writeMsg() {
    echo "Hello girls and boys!<br>";
    echo "How are you?";
}

// Appel de la fonction
writeMsg();
?>

Fonction avec paramètres

<?php
function userProfile($firstName, $lastName, $country) {
    echo "$firstName $lastName habite en $country.<br>";
}

// Appels de la fonction
userProfile("Jean", "Dupont", "France");
userProfile("Phil", "Kaizen", "Allemagne");
userProfile("Gianni", "Giardino", "Italie");
?>

Fonction avec valeurs par défaut

<?php
function multiplication($operande1 = 5, $operande2 = 10) {
    $resultat = $operande1 * $operande2;
    echo "$operande1 * $operande2 = $resultat<br>";
}

// Différents appels
multiplication(3, 4);    // Affiche : 3 * 4 = 12
multiplication(7);       // Affiche : 7 * 10 = 70 (utilise la valeur par défaut pour $operande2)
multiplication();        // Affiche : 5 * 10 = 50 (utilise les deux valeurs par défaut)
?>
⚠️ Règle importante : Les paramètres avec valeurs par défaut doivent toujours être à la fin de la liste des paramètres.
// âś… Correct
function test($a, $b = 5, $c = 10) { }

// ❌ Incorrect
function test($a = 5, $b, $c = 10) { } // Erreur !

Fonction qui retourne une valeur

<?php
function addition($operande1, $operande2) {
    $resultat = $operande1 + $operande2;
    return $resultat; // Retourne le résultat
}

$somme = addition(5, 6);
echo "La somme est : $somme"; // Affiche : La somme est : 11
?>

⚠️ 2. Les exceptions en PHP

Qu'est-ce qu'une exception ?

Une exception est un objet qui décrit une erreur ou un comportement inattendu. Elle permet de gérer proprement les erreurs au lieu de laisser le script planter.

Structure try-catch

<?php
try {
    // Code qui peut générer une erreur
    $resultat = 10 / 0; // Division par zéro
} catch (Exception $e) {
    // Code exécuté si une exception est levée
    echo "Erreur : " . $e->getMessage();
}
?>

Lever une exception avec throw

<?php
function division($dividende, $diviseur) {
    try {
        if ($diviseur == 0) {
            throw new Exception("Division par zéro");
        }
        $resultat = $dividende / $diviseur;
        echo "$dividende / $diviseur = $resultat<br>";
    } catch (Exception $e) {
        echo "Impossible de diviser par zéro.<br>";
    }
}

division(10, 2);  // Affiche : 10 / 2 = 5
division(10, 0);  // Affiche : Impossible de diviser par zéro.
?>

Méthodes de l'objet Exception

Méthode Description Exemple de résultat
getMessage() Récupère le message d'erreur "Division par zéro"
getCode() Récupère le code d'erreur 0 (par défaut)
getFile() Récupère le nom du fichier "/var/www/index.php"
getLine() Récupère le numéro de ligne 15
Exemple complet avec détails :
<?php
function division($dividende, $diviseur) {
    try {
        if ($diviseur == 0) {
            throw new Exception("Division par zéro", 100);
        }
        $resultat = $dividende / $diviseur;
        echo "$dividende / $diviseur = $resultat<br>";
    } catch (Exception $e) {
        echo "Erreur : " . $e->getMessage() . "<br>";
        echo "Code : " . $e->getCode() . "<br>";
        echo "Fichier : " . $e->getFile() . "<br>";
        echo "Ligne : " . $e->getLine() . "<br>";
    }
}
?>

Le bloc finally

Le bloc finally s'exécute toujours, qu'il y ait eu une exception ou non.

<?php
function division($dividende, $diviseur) {
    try {
        if ($diviseur == 0) {
            throw new Exception("Division par zéro");
        }
        echo "$dividende / $diviseur = " . ($dividende / $diviseur) . "<br>";
    } catch (Exception $e) {
        echo "Impossible de diviser par zéro.<br>";
    } finally {
        echo "Fin de la division.<br>";
    }
}

division(10, 2);  
// Affiche : 10 / 2 = 5
//           Fin de la division.

division(10, 0);  
// Affiche : Impossible de diviser par zéro.
//           Fin de la division.
?>
💡 Ordre d'exécution :
  1. try : essaie d'exécuter le code
  2. catch : attrape l'exception si elle est levée
  3. finally : s'exécute dans tous les cas

🔍 3. var_dump() - Outil de débogage

Ă€ quoi sert var_dump() ?

var_dump() affiche des informations détaillées sur une variable : son type, sa valeur, sa taille.

Utilisation

<?php
$nombre = 42;
$texte = "Bonjour";
$tableau = [1, 2, 3];

var_dump($nombre);
// Affiche : int(42)

var_dump($texte);
// Affiche : string(7) "Bonjour"

var_dump($tableau);
// Affiche : array(3) { [0]=>int(1) [1]=>int(2) [2]=>int(3) }
?>
Exemples de sorties :
⚠️ Utilisation : var_dump() est un outil de débogage temporaire. Ne le laissez pas dans le code de production !

🎲 4. Nombres aléatoires avec random_int()

Syntaxe

<?php
$nombre = random_int($min, $max);
?>

Exemple : Simuler un lancer de dé

<?php
$de = random_int(1, 6); // Nombre entre 1 et 6 inclus
echo "Vous avez tiré : $de<br>";

if ($de == 6) {
    echo "Félicitations !";
}
?>

Générer un tableau de nombres aléatoires

<?php
$tableau = [];

// Remplir le tableau avec 10 nombres entre 0 et 100
for ($i = 0; $i < 10; $i++) {
    $tableau[] = random_int(0, 100);
}

// Afficher le tableau
var_dump($tableau);
?>

Trouver min, max et moyenne

<?php
$tableau = [];
for ($i = 0; $i < 10; $i++) {
    $tableau[] = random_int(0, 100);
}

// Initialisation
$min = $tableau[0];
$max = $tableau[0];
$somme = 0;

// Parcours du tableau
foreach ($tableau as $valeur) {
    if ($valeur < $min) {
        $min = $valeur;
    }
    if ($valeur > $max) {
        $max = $valeur;
    }
    $somme += $valeur;
}

$moyenne = $somme / count($tableau);

echo "Min : $min<br>";
echo "Max : $max<br>";
echo "Moyenne : $moyenne<br>";
?>
đź’ˇ Fonctions PHP utiles :

📋 5. Récapitulatif des concepts

Structure d'une fonction

<?php
function nomDeLaFonction($param1, $param2 = valeurParDefaut) {
    // Code de la fonction
    return $resultat; // Optionnel
}

// Appel
$valeur = nomDeLaFonction($arg1, $arg2);
?>

Gestion d'erreurs avec try-catch-finally

<?php
try {
    // Code qui peut échouer
    if ($condition_erreur) {
        throw new Exception("Message d'erreur");
    }
    // Code normal
} catch (Exception $e) {
    // Gestion de l'erreur
    echo $e->getMessage();
} finally {
    // Code qui s'exécute toujours
    echo "Nettoyage...";
}
?>

✅ Points clés à retenir

💡 Tableau récapitulatif des exceptions

Élément Rôle Exemple
try Bloc de code Ă  tester try { division(); }
throw Lever une exception throw new Exception("Erreur");
catch Attraper l'exception catch (Exception $e) { }
finally Code toujours exécuté finally { echo "Fin"; }