Parlons de la façon d'utiliser les énumérations dans Laravel
Comment utiliser les énumérations dans Laravel ? L'article suivant vous présentera comment utiliser les énumérations dans Laravel. J'espère qu'il vous sera utile !
Je suis un grand fan des énumérations. Dernièrement, j'ai travaillé dans une entreprise utilisant 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 ils me manquent.
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 qu'il y a moins de risques que des bugs s'y infiltrent.
- 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'ajout 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 d'un package Laravel, y compris des exemples d'utilisation et de bonnes pratiques.
Package d'installation
Vous pouvez installer le package en exécutant la commande suivante dans le terminal via composer :
$ composer require bensampo/laravel-enum
Si vous utilisez une version de Laravel inférieure à 5.5, vous devez ajouter le fournisseur de services à config /app .php
.config/app.php
.
'BenSampo\Enum\EnumServiceProvider'
创建第一个枚举
我们将为用户类型创建一个枚举在我们的示例应用程序中,用户可以属于以下三种用户类型之一:管理员、付费成员、成员。
包中包含用于创建枚举的生成器,因此可以运行以下命令来创建名为UserType的枚举该文件将在“app/Enums/UserType.php”中创建
php artisan make:enum UserType
你将在这个文件中看到一定数量的脚手架。在文件顶部附近,可能的选项列表被定义为常量。这些常量值存储在数据库中,因此我发现最好是使用整数,但是并没有限制一定要使用整数,只要每一个值都是唯一就可以了了。
本例中的选项看起来是这样的:
const Administrator = 0; const PaidMember = 1; const Member = 2;
把值存储在数据库中
现在我们有了一个带有一些可能性的枚举,并且可以开始使用它。在迁移 user 表时, 可以添加以下内容。
$table->tinyInteger('type')->unsigned()->default(UserType::Member);
因为 null 不是枚举的选项,我们需要为它设置默认值。在这个例子中,有必要去假设默认情况下的用户将成为标准成员。
确保文件的顶部包含此枚举的 use 语句。
use App\Enums\UserType;
在操作中使用枚举
由于我们现在的用户模型具有类型的属性,我们可以对它进行访问,并和 enum 值进行比较。这就是枚举真正的好处,也是我为什么如此喜欢他们。看一下下面的用法示例和可能替代的方法。
if ($user->type === UserType::PaidMember) { // 在这里只是做一些付费会员的事情. }
如果我们不使用枚举,可能会有类似以下的代码:
if ($user->type === 1) { // 这个1表示什么?? // ... } if ($user->type === 'PaidMember') { // 这他妈咋么又是字符串 ? // ... }
使用枚举的第一个例子是最容易读懂并且也是最不容易出错的例子。如果我偶然输入了 UserType::Paidember
(注意拼写错误),我会得到一个很好的错误提示,告诉我代码错误了(类中不存在这个常量值),而不是像前两个示例那样默默的失败。(只是判断不符合条件,你还需要根据当前的条件语句去具体的查看相关代码?)
显示枚举
在应用的某些界面,我们可能希望向用户显示他们所属的用户类型。如果只是简单的输出从数据库所获取的整型值,显然达不到我们想要的结果。相反,可使用每个枚举类所继承基类的 getDescription
方法。
在 blade 模板上的操作如下:
<p>{{ \App\Enums\UserType::getDescription($user->type) }}</p>
输出结果Administrator
(管理员),PaidMember
(付费会员) 、Member
(会员)中的一个。
有时候关键词名称是复合词(就像 PaidMember
),我们想要展示和键名不同的东西。我们可以像下面这样覆盖掉当前枚举的描述。 在 app/Enums/UserType.php
:
public static function getDescription(int $value): string { switch ($value) { case self::PaidMember: return 'Paid member'; break; default: return self::getKey($value); } }
现在当我们调用 getDescription
我们将获取到 Administrator
, Paid member
or Member
public function store(Request $request) { $this->validate($request, [ 'type' => ['required', new EnumValue(UserType::class)], ]); // 保存用户等等... }
Création de la première énumération
Nous allons créer une énumération pour le type d'utilisateur Dans notre exemple d'application, un utilisateur peut appartenir à l'un des trois types d'utilisateurs suivants : Administrateur , payant membres, membres. 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 appelée UserType Le fichier sera créé dans "app/Enums/UserType.php" 🎜use App\Enums\UserType; use BenSampo\Enum\Rules\EnumValue;
UserType::Paidember
(notez la faute d'orthographe), je reçois un joli message d'erreur me disant que le code est erroné (cette valeur constante n'existe pas dans la classe), au lieu de quelque chose comme Les deux premiers exemples échouent silencieusement. (Juste pour juger que les conditions ne sont pas remplies, vous devez quand même vérifier le code pertinent spécifiquement en fonction de l'instruction conditionnelle actuelle ?)🎜🎜🎜Afficher l'énumération🎜🎜🎜Dans certaines interfaces de l'application, nous pouvons souhaiter afficher aux utilisateurs le type d'utilisateur auquel ils appartiennent. Si nous produisons simplement la valeur entière obtenue à partir de la base de données, nous ne pouvons évidemment pas obtenir les résultats souhaités. Utilisez plutôt la méthode getDescription
de la classe de base dont hérite chaque classe d'énumération. 🎜🎜Les opérations sur le modèle de lame sont les suivantes : 🎜rrreee🎜Les résultats de sortie sont Administrateur
(administrateur), PaidMember
(membre payant), Membre code>(membre). 🎜🎜Parfois, le nom du mot-clé est un mot composé (comme <code>PaidMember
), et nous souhaitons afficher quelque chose de différent du nom de la clé. Nous pouvons écraser la description actuelle de l’énumération comme suit. Dans app/Enums/UserType.php
:🎜rrreee🎜Maintenant, lorsque nous appellerons getDescription
, nous obtiendrons Administrateur
, Membre payant
code> ou Membre
.🎜🎜🎜Méthode de vérification🎜🎜🎜Lors de la modification des valeurs d'énumération via la saisie de l'utilisateur, il est préférable de s'assurer que nous n'acceptons que des valeurs valides. Nous pouvons utiliser les règles de validation du package. 🎜当以表格展示枚举的时候,我经常把他们显示为 HTML select 元素。这样虽仍然可以被恶意修改,但是避免了将错误的值传递给服务器的情况。
继续我们的用户使用示例,让我们在用户控制器中处理修改的值:
public function store(Request $request) { $this->validate($request, [ 'type' => ['required', new EnumValue(UserType::class)], ]); // 保存用户等等... }
记住要同时包含枚举的 use 语句和 EnumValue
的规则。
use App\Enums\UserType; use BenSampo\Enum\Rules\EnumValue;
结束
当然这并不是枚举所能完成的全部范围。但是它覆盖了90%的用例。
值得一看的列表 枚举类上的方法的完整列表 以查看您还能实现什么。
【相关推荐:laravel视频教程】
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les opérations de base de données en PHP sont simplifiées à l'aide d'ORM, qui mappe les objets dans des bases de données relationnelles. EloquentORM dans Laravel vous permet d'interagir avec la base de données en utilisant une syntaxe orientée objet. Vous pouvez utiliser ORM en définissant des classes de modèle, en utilisant des méthodes Eloquent ou en créant un système de blog dans la pratique.

Les dernières versions de Laravel 9 et CodeIgniter 4 fournissent des fonctionnalités et des améliorations mises à jour. Laravel9 adopte l'architecture MVC et fournit des fonctions telles que la migration de bases de données, l'authentification et le moteur de modèles. CodeIgniter4 utilise l'architecture HMVC pour fournir le routage, l'ORM et la mise en cache. En termes de performances, le modèle de conception basé sur le fournisseur de services de Laravel9 et le framework léger de CodeIgniter4 lui confèrent d'excellentes performances. Dans les applications pratiques, Laravel9 convient aux projets complexes qui nécessitent de la flexibilité et des fonctions puissantes, tandis que CodeIgniter4 convient au développement rapide et aux petites applications.

Comparez les capacités de traitement des données de Laravel et CodeIgniter : ORM : Laravel utilise EloquentORM, qui fournit un mappage relationnel classe-objet, tandis que CodeIgniter utilise ActiveRecord pour représenter le modèle de base de données en tant que sous-classe de classes PHP. Générateur de requêtes : Laravel dispose d'une API de requêtes chaînées flexible, tandis que le générateur de requêtes de CodeIgniter est plus simple et basé sur des tableaux. Validation des données : Laravel fournit une classe Validator qui prend en charge les règles de validation personnalisées, tandis que CodeIgniter a moins de fonctions de validation intégrées et nécessite un codage manuel des règles personnalisées. Cas pratique : l'exemple d'enregistrement d'utilisateur montre Lar

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Pour les débutants, CodeIgniter a une courbe d'apprentissage plus douce et moins de fonctionnalités, mais couvre les besoins de base. Laravel offre un ensemble de fonctionnalités plus large mais a une courbe d'apprentissage légèrement plus raide. En termes de performances, Laravel et CodeIgniter fonctionnent bien. Laravel dispose d'une documentation plus complète et d'un support communautaire actif, tandis que CodeIgniter est plus simple, léger et possède de solides fonctionnalités de sécurité. Dans le cas pratique de la création d'une application de blog, EloquentORM de Laravel simplifie la manipulation des données, tandis que CodeIgniter nécessite une configuration plus manuelle.

Lors du choix d'un framework pour de grands projets, Laravel et CodeIgniter ont chacun leurs propres avantages. Laravel est conçu pour les applications d'entreprise, offrant une conception modulaire, une injection de dépendances et un ensemble de fonctionnalités puissantes. CodeIgniter est un framework léger plus adapté aux projets de petite et moyenne taille, mettant l'accent sur la rapidité et la facilité d'utilisation. Pour les grands projets avec des exigences complexes et un grand nombre d'utilisateurs, la puissance et l'évolutivité de Laravel sont plus adaptées. Pour les projets simples ou les situations avec des ressources limitées, les capacités de développement légères et rapides de CodeIgniter sont plus idéales.

L'architecture des microservices utilise des frameworks PHP (tels que Symfony et Laravel) pour implémenter des microservices et suit les principes RESTful et les formats de données standard pour concevoir des API. Les microservices communiquent via des files d'attente de messages, des requêtes HTTP ou gRPC et utilisent des outils tels que Prometheus et ELKStack pour la surveillance et le dépannage.

Pour les petits projets, Laravel convient aux projets plus importants qui nécessitent des fonctionnalités et une sécurité élevées. CodeIgniter convient aux très petits projets qui nécessitent légèreté et facilité d'utilisation.
