Énumérations (Enums)
Définir des ensembles de valeurs avec vérification de type grâce aux énumérations adossées et pures de PHP 8.1.
Énumérations (Enums) est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Que sont les énumérations ?
PHP 8.1 a introduit les énumérations : un type spécial qui limite une variable à un ensemble prédéfini de valeurs nommées, rendant le code plus expressif et plus sûr du point de vue des types.
Énumération pure (énumération unitaire)
Une énumération pure possède des cas nommés sans valeur associée. Elle convient parfaitement à un état, une direction ou un statut.
<?php
enum Status {
case Active;
case Inactive;
case Banned;
}
$s = Status::Active;
echo $s->name; // "Active"Énumération adossée
Une énumération adossée attribue une valeur scalaire (un entier ou une chaîne) à chaque cas, ce qui est utile pour le stockage en base de données ou les réponses d’interface de programmation.
<?php
enum Color: string {
case Red = "red";
case Green = "green";
case Blue = "blue";
}
echo Color::Red->value; // "red"from et TryFrom
Convertissez une valeur brute en cas d’énumération avec from() (lève une exception si la valeur est invalide) ou tryFrom() (renvoie null si la valeur est invalide).
<?php
$color = Color::from("red"); // Color::Red
$maybe = Color::tryFrom("purple"); // nullÉnumérations dans les indications de type
Utilisez les énumérations comme indications de type pour les paramètres et les types de retour : PHP garantit que seuls des cas valides peuvent être transmis.
<?php
function paint(Color $color): void {
echo "Painting with ".$color->value;
}
paint(Color::Blue); // "Painting with blue"Cas d’énumération dans match
Les énumérations s’utilisent particulièrement bien avec les expressions match pour assurer un traitement exhaustif.
<?php
$label = match($status) {
Status::Active => "Active user",
Status::Inactive => "Inactive account",
Status::Banned => "Banned",
};
// PHP can warn if cases are unhandledUne énumération implémente une interface
Les énumérations peuvent implémenter des interfaces, ce qui permet un comportement polymorphe.
<?php
interface HasLabel {
public function label(): string;
}
enum Status: string implements HasLabel {
case Active = "active";
case Inactive = "inactive";
public function label(): string {
return ucfirst($this->value);
}
}Méthodes des énumérations
Les énumérations peuvent posséder des méthodes, mais pas de constructeur ni de propriétés modifiables.
<?php
enum Suit: string {
case Hearts = "H";
case Diamonds = "D";
case Clubs = "C";
case Spades = "S";
public function color(): string {
return match($this) {
Suit::Hearts, Suit::Diamonds => "red",
Suit::Clubs, Suit::Spades => "black",
};
}
}Constantes d’énumération
Les énumérations peuvent posséder des constantes, mais pas des cas, pour représenter des valeurs scalaires associées.
<?php
enum Direction {
case North;
case South;
const DEFAULT = self::North;
}Énumération des cas
EnumName::cases() renvoie un tableau de tous les objets représentant les cas de l’énumération, ce qui est utile pour générer les options d’une liste déroulante.
<?php
$options = Color::cases();
foreach ($options as $c) {
echo $c->name.": ".$c->value."\n";
}Énumérations et constantes de classe
Les énumérations garantissent la sécurité des types : vous ne pouvez pas transmettre accidentellement l’entier 1 lorsqu’une énumération Status est attendue. Les constantes de classe n’offrent aucune garantie de ce type.
Résumé
Les énumérations représentent des ensembles fixes de valeurs tout en garantissant la sécurité des types. Utilisez les énumérations pures pour les états, et les énumérations adossées lorsque vous avez besoin de valeurs destinées à une base de données ou à une interface de programmation. Utilisez tryFrom() pour une analyse sûre.
Vérification rapide
Que renvoie Color::tryFrom("invalid") si aucun cas ne correspond ?
Questions Fréquemment Posées
La leçon « Énumérations (Enums) » est-elle gratuite ?
Oui — le texte complet de « Énumérations (Enums) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Énumérations (Enums) » ?
Définir des ensembles de valeurs avec vérification de type grâce aux énumérations adossées et pures de PHP 8.1. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Énumérations (Enums) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Expression match et arguments nommés
- Opérateur nullsafe et types union
- Énumérations (Enums)
- Fibers : concurrence coopérative