PHP 8.4 Essentials
Thème :
Junior
2 vues ·9/23 leçonsL’Expression Match
PHP 8 a introduit l’expression match comme alternative plus puissante au switch. Elle est plus concise et plus sûre.
Syntaxe de Base
<?php
$statut = 200;
$message = match($statut) {
200 => 'OK',
201 => 'Créé',
400 => 'Requête Incorrecte',
404 => 'Non Trouvé',
500 => 'Erreur Serveur',
};
echo $message; // 'OK'
Match vs Switch
| Fonctionnalité | match |
switch |
|---|---|---|
| Comparaison | Stricte (===) |
Lâche (==) |
| Retourne une valeur | Oui | Non |
| Fall-through | Non | Oui (sans break) |
default requis |
Oui (sinon exception) | Non |
| Conditions multiples | Oui | Oui |
Conditions Multiples
<?php
$jour = 'Samedi';
$type = match($jour) {
'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi' => 'Jour de semaine',
'Samedi', 'Dimanche' => 'Week-end',
};
echo $type; // 'Week-end'
Le Cas par Défaut
<?php
$code = 418;
$message = match($code) {
200 => 'OK',
404 => 'Non Trouvé',
default => 'Statut Inconnu',
};
echo $message; // 'Statut Inconnu'
Match avec Expressions Complexes
<?php
$age = 25;
$categorie = match(true) {
$age < 13 => 'enfant',
$age < 20 => 'adolescent',
$age < 65 => 'adulte',
default => 'sénior',
};
echo $categorie; // 'adulte'
Quand Utiliser Match
- Retourner des valeurs selon des conditions.
- Comparaisons strictes nécessaires.
- Plusieurs valeurs mappant vers le même résultat.
- Quand le fall-through de
switchest indésirable.
Gestion des Erreurs
<?php
$valeur = 'inconnue';
// Lance UnhandledMatchError si aucune branche ne correspond !
$resultat = match($valeur) {
'a' => 1,
'b' => 2,
// Pas de default = UnhandledMatchError
};
// Toujours inclure un default pour la sécurité
$resultat = match($valeur) {
'a' => 1,
'b' => 2,
default => 0,
};
Exemples de code
Gestion des codes HTTP avec match
<?php
function getInfoStatut(int $code): array {
return match($code) {
200, 201, 204 => [
'type' => 'succes',
'icone' => '✓'
],
301, 302, 307 => [
'type' => 'redirection',
'icone' => '→'
],
400, 401, 403, 404 => [
'type' => 'erreur_client',
'icone' => '⚠'
],
500, 502, 503 => [
'type' => 'erreur_serveur',
'icone' => '✗'
],
default => [
'type' => 'inconnu',
'icone' => '?'
],
};
}
print_r(getInfoStatut(404));
// ['type' => 'erreur_client', 'icone' => '⚠']
?>
Ressources
- Expression Match — Documentation officielle de l’expression match PHP 8
📘 Cette leçon fait partie du cours PHP Essentials sur la plateforme d’apprentissage RostoDev.
Prêt à passer à la suite ?
Vous avez terminé cette leçon sur L'Expression Match. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.