Je suis un grand fan des énumérations. Récemment, j'ai travaillé pour une entreprise qui utilise C#, où les énumérations sont largement utilisées, et j'ai l'habitude de pouvoir les trouver quand. Je ne les trouve pas et je les manque.
Je les utilise pour tout ce qui a un ensemble limité d'options possibles, comme le jour de la semaine, le statut d'une commande ou, comme dans l'exemple ci-dessous, le type d'utilisateur.
L'utilisation des énumérations présente plusieurs avantages :
- Réduit les erreurs causées par la transposition ou la faute de frappe des nombres.
- Facilite la modification des valeurs à l'avenir.
- Rend le code plus facile à lire, ce qui signifie que des bugs sont moins susceptibles de s'y faufiler.
- Assurer la compatibilité ascendante Lorsque vous utilisez des énumérations, vous pouvez réduire considérablement le risque d'échec de votre code si quelqu'un modifie la valeur correspondant au nom du membre à l'avenir.
PHP lui-même ne prend pas en charge les énumérations, mais il est assez facile d'obtenir des effets équivalents en utilisant des constantes dans les classes. De plus, j'ai créé un package Laravel appelé laravel-enum. Il vous permet d'accéder à des fonctions d'assistance telles que la liste des clés et des valeurs, l'attachement de descriptions aux valeurs et la validation des requêtes qui attendent des valeurs d'énumération.
Ce guide décrit le processus d'installation du package Laravel, y compris des exemples d'utilisation et de bonnes pratiques.
Package d'installation
Vous pouvez exécuter la commande suivante dans le terminal via composer pour installer le package :
$ composer require bensampo/laravel-enum
Si vous utilisez Laravel inférieur à Version 5.5, vous devez ajouter le fournisseur de services à config/app.php.
'BenSampo\Enum\EnumServiceProvider'
Créer la première énumération
Nous allons créer une énumération pour le type d'utilisateur In Dans notre exemple d'application, les utilisateurs peuvent être l'un des trois types d'utilisateurs suivants : Administrateur, Membre payant, Membre.
Le package contient des générateurs pour créer des énumérations, vous pouvez donc exécuter la commande suivante pour créer une énumération nommée UserType Le fichier sera créé dans "app/Enums/UserType.php"
php artisan make:enum UserType
Vous verra une certaine quantité d’échafaudage dans ce fichier. En haut du fichier, la liste des options possibles est définie sous forme de constantes. Ces valeurs constantes sont stockées dans la base de données, j'ai donc trouvé préférable d'utiliser des nombres entiers, mais il n'y a aucune restriction sur l'utilisation de nombres entiers tant que chaque valeur est unique.
Les options de cet exemple ressemblent à ceci :
const Administrator = 0; const PaidMember = 1; const Member = 2;
Stockez la valeur dans la base de données
Nous avons maintenant une énumération avec quelques possibilités et pouvons commencer à l'utiliser. Lors de la migration de la table utilisateur, vous pouvez ajouter les éléments suivants.
$table->tinyInteger('type')->unsigned()->default(UserType::Member);
Parce que null n'est pas une option pour l'énumération, nous devons lui définir une valeur par défaut. Dans cet exemple, il faut supposer que l'utilisateur par défaut deviendra un membre standard.
Assurez-vous que le haut du fichier contient une instruction use pour cette énumération.
use App\Enums\UserType;
Utiliser des énumérations dans les opérations
Puisque notre modèle utilisateur a désormais une propriété de type, nous pouvons y accéder et la comparer à la valeur enum. C'est le véritable avantage des énumérations, et pourquoi je les aime tant. Jetez un œil aux exemples d’utilisation et aux alternatives possibles ci-dessous.
if ($user->type === UserType::PaidMember) { // 在这里只是做一些付费会员的事情. }
Si nous n'utilisons pas d'énumérations, nous pouvons avoir un code similaire à celui-ci :
if ($user->type === 1) { // Qu'est-ce que cela 1 signifier? ? //... } if ($user->type === 'PaidMember') { // Pourquoi diable est-ce encore une chaîne ?
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!