Maison > cadre php > Laravel > le corps du texte

Utiliser des énumérations dans Laravel

Guanhui
Libérer: 2020-06-12 18:10:39
avant
3267 Les gens l'ont consulté

Utiliser des énumérations dans Laravel

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
Copier après la connexion

Si vous utilisez Laravel inférieur à Version 5.5, vous devez ajouter le fournisseur de services à config/app.php.

'BenSampo\Enum\EnumServiceProvider'
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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);
Copier après la connexion

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;
Copier après la connexion

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) {
    // 在这里只是做一些付费会员的事情.
}
Copier après la connexion

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 ?
Copier après la connexion

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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal