Concevoir avec des énumérations PHP 8.1

DEV - 03/12
PHP 8.1 : L'essor de l'énumération PHP 8.1 introduit la syntaxe de l'énumération. J'étais...

PHP 8.1 : l'essor de l'énumération

PHP 8.1 introduit la syntaxe de l'énumération. J'étais curieux de connaître l'argument et avant PHP 8.1, il y avait plus d'implémentations expérimentales mais pas de support direct. L'énumération est désormais là et constitue une construction native qui rend le code beaucoup plus expressif et offre une nouvelle façon de modéliser la conception de logiciels.

L'Enumeration en PHP possède désormais une famille implicite où le UnitEnum de base avec un contrat minimal :

interface UnitEnum { /* Fonctions */ public static cases(): array }
Entrer en mode plein écran Quitter le mode plein écran

Le BackedEnum étend le UnitEnum permettant de relier des valeurs primitives (int ou string) à des instances d'énumération.

interface BackedEnum extends UnitEnum { /* Fonctions */ public static from(int|string $value): static public static tryFrom(int|string $value): ?static /* Fonctions héritées */ public static UnitEnum::cases(): tableau }
Entrer en mode plein écran Quitter le mode plein écran

Remarque : Ces éléments sont des interfaces mais pas dans DEV Space car ils sont utilisés par le moteur PHP, introduit pour la vérification de type.

J'ai toujours vu l'énumération comme des symboles de domaine (un ensemble limité de symboles) mais le PHP RFC suffit à définir certains cas d'utilisation qui peuvent être utiles pour exprimer davantage de design.

Énumération PHP : un peu d'anti-modèle !

Avant de continuer, je souhaite présenter quelques mauvaises idées sur l'utilisation des énumérations mais rester à un niveau d'abstraction élevé.

La constante déroutante

Il est possible de déclarer certaines constantes à l'intérieur d'une énumération mais la constante déclarée n'est pas un cas de l'énumération. Il peut être utile d'avoir quelques valeurs de bord à l'intérieur de l'énumération, mais nous devons cependant nous rappeler d'éviter de confondre les développeurs. Considérez également que les constantes peuvent masquer les appelables !

enum Taille { case Petit ; cas moyen ; boîtier grand ; public const Huge...
[Courte citation de 8% de l'article original]
Loading...