Maison >développement back-end >tutoriel php >Comment les énumérations en PHP ont-elles évolué et quelles solutions de contournement existaient avant le support natif ?

Comment les énumérations en PHP ont-elles évolué et quelles solutions de contournement existaient avant le support natif ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 07:39:10438parcourir

How Have Enumerations in PHP Evolved, and What Workarounds Existed Before Native Support?

Énumérations sur PHP

PHP manquait nativement d'énumérations jusqu'à la version 8.1, ce qui rendait difficile le stockage de valeurs prédéfinies. Une solution populaire consistait à utiliser des constantes, mais elles souffraient de problèmes de collision d’espace de noms et de portée globale. Les tableaux, bien qu'immunisés contre les collisions d'espaces de noms, manquaient de sécurité de type et étaient sujets aux écrasements lors de l'exécution.

Énumérations natives dans PHP 8.1

Depuis PHP 8.1, les énumérations natives ont été introduites . Ils fournissent une syntaxe claire pour définir les énumérations :

enum DaysOfWeek: int
{
    case Sunday = 0;
    case Monday = 1;
    // ...
}

Les énumérations peuvent être utilisées pour les constantes de type sécurisé et la validation des valeurs :

$today = DaysOfWeek::Sunday;
if ($today === DaysOfWeek::Monday) {
    // ...
}

Solutions de contournement pour PHP 8.0 et versions antérieures

Avant PHP 8.1, solutions de contournement populaires inclus :

  • Classes d'énumération abstraites : Définir une classe abstraite avec des consts représentant des valeurs d'énumération :
abstract class DaysOfWeek
{
    const Sunday = 0;
    const Monday = 1;
    // ...
}
  • Amélioré Classes Enum : Étendre BasicEnum pour fournir une validation méthodes :
abstract class BasicEnum {}

abstract class DaysOfWeek extends BasicEnum
{
    const Sunday = 0;
    const Monday = 1;
    // ...
}

Avec ces classes, la validation des valeurs devient possible :

if (DaysOfWeek::isValidName('Monday')) {
    // ...
}

Autres options

  • SplEnum : Cette classe peut être utilisée pour créer des instances d'énumération, mais elle n'est pas aussi largement acceptée que ci-dessus approches.
  • Bibliothèques externes : Certaines bibliothèques externes offrent également un support enum.

Conclusion

Avec l'introduction des énumérations natives dans PHP 8.1, travailler avec des valeurs prédéfinies est devenu plus facile et plus robuste. Cependant, même pour les anciennes versions de PHP, il existe des solutions de contournement efficaces pour fournir des fonctionnalités de type énumération.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn