Salut, comme vous le savez, les énumérations PHP ont été introduites avec PHP 8.1 , il y a donc de fortes chances que vous ne les utilisiez pas jusqu’à présent ou parfaitement.
Voyons donc ce qu’est une énumération et comment l’utiliser en PHP.
Bien que je sois à peu près sûr qu’avant PHP 8.1 , certains gourous simulaient le comportement enum en utilisant des classes PHP comme ci-dessous :
statut de classe {
public const REJETÉ = 0 ;
public const EN ATTENTE = 1;
public const ACCEPTÉ = 2 ;
}
Ce travail est assez bien, mais à mon avis, ce n’est pas assez puissant.
Mais attendez! pourquoi auriez-vous même besoin de ces énumérations ou classes pour simuler quelque chose appelé énumérations ? A quoi sert cette fonctionnalité ?
Stocker des états/statuts dans votre base de données sans point de référence de potentiels n’est pas idéal.
Idéalement, vous voudriez voir TOUS les états qu’un article pourrait avoir.
Article ::create([
"title"=> "Hello world enums!",
"status"=> "pending"
]);
Donc je suppose que vous pouvez tous voir les problèmes derrière cela, n’est-ce pas ?
Mais voici une énumération .
enum Status : int {
case REJECTED = 0 ;
cas EN ATTENTE = 1 ;
cas ACCEPTÉ = 2 ;
}
Dans cet exemple, nous avons prédéfini tous les statuts qu’un article peut avoir.
Il s’agit d’une “énumération sauvegardée” qui contient des valeurs pour chaque cas. Vous pouvez indiquer uniquement int ou string et ne pouvez pas mélanger les types.
Passons directement à la façon dont vous l’utiliseriez. Créons un article avec un statut tiré directement du cas « EN ATTENTE » . Le “->value” ici est une propriété sur l’objet Enum (les Enums sont des objets) .
Article ::create([
"title"=> "Hello world enums!",
"status"=> Status::PENDING->value // renvoie 1
]);
Dans notre exemple, nous avons maintenant la valeur ‘1’ stockée dans la base de données, représentant « STATUS ».
Comment résolvons-nous l’énumération à partir de cette valeur ? Comme ça:
$article = Article::first();// ceci renvoie un objet enum back $status = Status::from($article->status);
Quel est l’intérêt de récupérer un Enum à partir d’une valeur de cas ?
Eh bien, Enums peut avoir des méthodes, nous pourrions donc créer une méthode pour obtenir le statut à afficher dans l’interface utilisateur, par exemple.
Vous pouvez utiliser cette méthode ” presentTense ” en l’appelant directement sur l’Enum résolu.
Ainsi, si vous répertoriez l’article d’un utilisateur, vous pourrez afficher un statut personnalisé à côté de l’article.
$article = Article::first();// ceci renvoie un objet enum back $status = Status::from($article->status)->presentTense();
Si vous souhaitez afficher toutes les options d’état d’article possibles sur un formulaire dans votre interface utilisateur, comment obtenez-vous toutes les valeurs Enum possibles ?
Les énumérations ont une méthode qui les renverra pour vous !
Vous pouvez l’utiliser pour créer un élément de sélection avec des options, prêt à être soumis et stocké.
Merci pour votre temps; J’espère que ce message vous a été utile.
Merci de votez pour cet article :