Table des matières
Qu'est-ce que l'énume?
Améliorer la sécurité des types: de la "valeur magique" aux types explicites
Énumérations soutenues: lier les valeurs scalaires
Méthodes d'énumération et extensions de comportement
Suggestions réelles et scénarios d'utilisation
Résumer
Maison développement back-end tutoriel php PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type

Jul 28, 2025 am 04:43 AM
PHP Data Types

Les énumérations introduites dans PHP 8.1 fournit une collection constante de type type, résolvant le problème de la valeur magique; 1. Utilisez ENUM pour définir des constantes fixes, telles que le statut :: brouillon, pour vous assurer que seules des valeurs prédéfinies sont disponibles; 2. Bind Enum aux chaînes ou entiers à travers des énumérations soutenues, et le support de () et TryFrom () pour convertir entre les scalaires et les énuméres; 3. Les énumérations peuvent définir des méthodes et des comportements, tels que Color () et Isoditable (), pour améliorer l'encapsulation de la logique commerciale; 4. Applicable aux scénarios statiques tels que l'état et la configuration, pas pour les données dynamiques; 5. Il peut implémenter l'interface Unitenum ou BackEdedenum pour les contraintes de type, améliorer la robustesse du code et le support IDE, qui est une caractéristique importante du développement de PHP moderne.

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type

PHP 8.1 a introduit Enum (enums) , qui a marqué une étape importante en PHP en termes de sécurité de type et de maintenabilité du code. Dans le passé, nous avons souvent utilisé des constantes de classe ou des constantes mondiales pour simuler les performances codées, mais ces méthodes manquent de contraintes de type, ne peuvent pas empêcher les valeurs illégales d'être transmises et il est difficile d'obtenir de bonnes invites dans l'IDE. L'émergence des énumérations est précisément pour résoudre ces problèmes.

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type

Qu'est-ce que l'énume?

L'énumération est un type de données spécial utilisé pour définir un ensemble de constantes nommées. Dans PHP 8.1, enum devient un mot-clé nativement soutenu par la langue, vous permettant de définir un type dont la valeur ne peut être que l'une des quelques options prédéfinies.

 statut d'énumération
{
    Projet de cas;
    cas publié;
    cas archivé;
}

Maintenant, Status::Draft , Status::Published et Status::Archived sont les seules valeurs juridiques. Vous ne pouvez plus passer des chaînes ou des nombres comme 'draft' ou 1 à volonté - cela améliore considérablement la sécurité de type.

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type

Améliorer la sécurité des types: de la "valeur magique" aux types explicites

Avant qu'il y ait des énumérations, nous voyons souvent du code comme ceci:

 fonction setStatus (string $ status): void {
    if (! in_array ($ statut, ['draft', 'publié', 'archivé'])) {
        lancer un nouveau invalidargumentException («statut invalide»);
    }
    // ...
}

Le problème avec cette écriture est:

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type
  • 'draft' est une "chaîne magique" facile à épeler.
  • Il n'y a pas de contrôle de compilation et les erreurs ne peuvent être trouvées qu'au moment de l'exécution.
  • L'IDE ne peut pas déduire la valeur juridique.

Après avoir utilisé Enum:

 fonction setStatus (status $ status): void {
    // Le système de type garantit que la valeur d'énumération de l'état juridique}

// setStatus (statut :: draft);

Maintenant, si vous passez une valeur illégale, PHP rapportera directement une erreur (en particulier lorsque le type strict est activé) et l'IDE peut également fournir des invites d'achèvement et d'erreur automatique.


Énumérations soutenues: lier les valeurs scalaires

Parfois, nous voulons que la valeur d'énumération correspond à une chaîne ou un entier spécifique (comme stocké dans une base de données). PHP 8.1 fournit des énumérations soutenues pour soutenir cela.

 enum orderstatus: chaîne
{
    cas en attente = «en attente»;
    case expédiée = «expédiée»;
    case livrée = «livrée»;
}

Vous pouvez facilement vous convertir entre l'énumération et le scalaire:

 // Créer une enum à partir d'une chaîne $ status = orderstatus :: from ('en attente'); // retourner Orderstatus :: en attente
$ status = orderstatus :: tryfrom ('inconnu'); // retourne null (sans exception lancée)

// Obtenez la valeur sous-jacente Echo $ status-> valeur; // Sortie «en attente»

Ceci est très pratique dans la gestion de la base de données, des demandes d'API et d'autres scénarios - vous pouvez convertir en toute sécurité les chaînes en énumaux, puis utiliser des invites de type pour vous assurer que la logique suivante est correcte.


Méthodes d'énumération et extensions de comportement

Les énumérations peuvent non seulement contenir des constantes, mais également définir des méthodes et même implémenter des interfaces.

 statut d'énumération
{
    Projet de cas;
    cas publié;
    cas archivé;

    Couleur de fonction publique (): chaîne
    {
        retour de la correspondance ($ this) {
            self :: draft => 'gris',
            self :: publié => 'green',
            self :: archivé => 'rouge',
        };
    }

    Fonction publique iSeDitable (): Bool
    {
        Retour $ this === self :: Draft || $ this === self :: publié;
    }
}

Exemple d'utilisation:

 Echo Status :: Draft-> Color (); // gris
var_dump (status :: archived-> iseDitable ()); // FAUX

Cela fait des énumérations plus que de simples «ensembles de valeurs» mais peut transporter un comportement et faire partie du modèle de domaine réel.


Suggestions réelles et scénarios d'utilisation

  • ✅Status Champs : État de la commande, état de l'article, rôle utilisateur, etc.
  • Options de configuration: par exemple OutputFormat::Json , OutputFormat::Xml .
  • ✅Formée Vérification de l'entrée : Utilisez en combinaison avec le DTO pour s'assurer que les valeurs d'entrée appartiennent à un ensemble juridique.
  • ❌ N'abusez pas: si la valeur est dynamique (comme dans le tableau de configuration de la base de données), elle ne convient pas à l'énumération.

Conseils: vous pouvez laisser enum implémenter UnitEnum ou l'interface BackedEnum pour faire des contraintes de type, par exemple:

 Fonction ProcessEnum (Unitenum $ enum): void {...}

Résumer

Les enums de PHP 8.1 ne sont pas seulement un sucre de syntaxe, il apporte une sécurité réelle, une meilleure lisibilité et un support d'outils plus fort. En éliminant la «valeur magique» et en améliorant la robustesse du code, il change la façon dont nous organisons les constantes et les états.

Fondamentalement, tout cela est ça - ce n'est pas compliqué, mais une fois qu'il est utilisé, il ne peut pas être retourné.

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Modernisation de votre base de code avec les types d'union de PHP 8 Modernisation de votre base de code avec les types d'union de PHP 8 Jul 27, 2025 am 04:33 AM

Upgradephp7.xcodebasestophp8 byRplacingPhpdoc-SuggestypesLILY @ paramstring | IntwithNativeUnionTypeSuchassstring | IntForparametersAndreturnTypes, qui ImprovestySyPesafetyAnd Clarity

La dualité de PHP: naviguer des déclarations de type vs et stricte La dualité de PHP: naviguer des déclarations de type vs et stricte Jul 26, 2025 am 09:42 AM

PHP prend en charge la coexistence de types lâches et de types stricts, qui est la caractéristique centrale de son évolution des langages de script aux langages de programmation modernes. 1. Les types lâches conviennent au prototypage rapide, à la gestion de l'entrée dynamique des utilisateurs ou à l'amarrage avec des API externes, mais il existe des problèmes tels que le risque de conversion de type implicite, la difficulté de débogage et le faible support d'outils. 2. Le type strict est activé par Declare (strict_types = 1), qui peut détecter les erreurs à l'avance, améliorer la lisibilité du code et le support IDE, et convient aux scénarios avec des exigences élevées pour la logique commerciale de base, la collaboration d'équipe et l'intégrité des données. 3. L'utilisation mixte doit être utilisée dans le développement réel: les types stricts sont activés par défaut, les types lâches ne sont utilisés que lorsque cela est nécessaire aux limites d'entrée, et la conversion de vérification et de type est effectuée dès que possible. 4. Les pratiques recommandées incluent l'utilisation de PHPSTA

Comprendre le pseudo-type «callable» et sa mise en œuvre Comprendre le pseudo-type «callable» et sa mise en œuvre Jul 27, 2025 am 04:29 AM

AcalleableInphpisapseudo-TyperepresentinganyValueThatCanBeinvokedUsing () Opérateur, a utilisé l'imprimé pour les calculs de la codécolaire: 1) nommé de types de fonctionnalités

Les périls de la précision: manipulation des nombres à virgule flottante en php Les périls de la précision: manipulation des nombres à virgule flottante en php Jul 26, 2025 am 09:41 AM

0,1 0,2! == 0,3Inphpdutobinaryfloating-pointprécisionlimitations, SodevelopersMustavoidDirectcomparisonsonsandUseepSilon-basés à base, Employbcmathorgmpforexactarithmetics, StorecurrencyInntegers whenpassib

PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type PHP 8.1 Enum: un nouveau paradigme pour les constantes de type type Jul 28, 2025 am 04:43 AM

Les énumérations introduites dans PHP8.1 fournit une collection constante de type type, résolvant le problème de la valeur magique; 1. Utilisez ENUM pour définir des constantes fixes, telles que le statut :: brouillon, pour vous assurer que seules des valeurs prédéfinies sont disponibles; 2. Bind Enum aux chaînes ou entiers via BackEdedenums, et soutenez la conversion de () et TryFrom () entre les scalaires et les énumérations; 3. Les énumérations peuvent définir des méthodes et des comportements, tels que Color () et Isoditable (), pour améliorer l'encapsulation de la logique commerciale; 4. Applicable aux scénarios statiques tels que l'état et la configuration, pas pour les données dynamiques; 5. Il peut implémenter l'interface Unitenum ou Backedénum pour les contraintes de type, améliorer la robustesse du code et la prise en charge de l'IDE, et est

De `mixte» à «vide»: un guide pratique des déclarations de type de retour PHP De `mixte» à «vide»: un guide pratique des déclarations de type de retour PHP Jul 27, 2025 am 12:11 AM

ReturnTypeSinphpimprovecodeReliability andclarity gyspeciying whatafonction alustreturn.2.UsUsBasicTypeSlikestring, Array, ordatetimetoenforcecorrectreturnvaluesandcatcherrorserely.3.ApplyNullepleTyPeswi

La durée de vie d'une variable: la structure interne de «zval» de PHP expliquée La durée de vie d'une variable: la structure interne de «zval» de PHP expliquée Jul 27, 2025 am 03:47 AM

PHP utilise la structure ZVAL pour gérer les variables. La réponse est: 1. Zval contient des valeurs, des types et des métadonnées, avec une taille de 16 octets; 2. Lorsque le type change, seules les informations du syndicat et du type doivent être mises à jour; 3. Les types complexes se réfèrent aux structures avec les comptes de référence via des pointeurs; 4. Lors de l'attribution de valeurs, la copie est utilisée pour optimiser la mémoire; 5. Les références font que les variables partagent le même zval; 6. Les références de recyclage sont traitées par un collecteur de déchets spécial. Cela explique le mécanisme sous-jacent du comportement variable de PHP.

Gestion des ressources en PHP: le cycle de vie d'un type de «ressource» Gestion des ressources en PHP: le cycle de vie d'un type de «ressource» Jul 27, 2025 am 04:30 AM

Le cycle de vie des ressources PHP est divisé en trois étapes: 1. Création des ressources, obtenant des gardiens du système externe via des fonctions telles que Fopen et Curl_init; 2. Utilisation des ressources, transmettant les ressources aux fonctions connexes pour le fonctionnement, PHP mappe à la structure du système sous-jacente via Resource ID; 3. La destruction des ressources, l'appel manuellement FCLOSE, CURL_CLOSE et d'autres fonctions doivent être prioritaires pour libérer les ressources pour éviter de s'appuyer sur la collecte automatique des ordures pour empêcher les descripteurs de fichiers de s'épuiser. Les meilleures pratiques incluent: toujours clôturer explicitement les ressources, utiliser Essaye ... Enfin assurer le nettoyage, hiérarchiser les objets tels que l'APD qui prend en charge __ destruct, éviter les ressources de stockage mondial et surveiller les ressources actives via get_resources ()

See all articles