Comment implémenter la fonction d'énumération JAVA en PHP

醉折花枝作酒筹
Libérer: 2023-03-10 18:14:02
avant
1371 Les gens l'ont consulté

Cet article vous présentera comment implémenter la fonction d'énumération JAVA en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment implémenter la fonction d'énumération JAVA en PHP

Comment implémenter la fonction d'énumération JAVA en PHP

Vue d'ensemble

En itération Après N versions, la bibliothèque d'énumération PHP php-enum

qui est très similaire à la définition et à l'utilisation de l'énumération Java est enfin implémentée dans la dernière version. Il est nécessaire de mentionner ici pourquoi l'énumération Java doit être implémentée. J'ai connu les énumérations en Java. Avant cela, j'utilisais PHP depuis longtemps et je n'avais jamais entendu parler des énumérations. Cependant, dans les projets Java, les énumérations peuvent être vues partout, surtout lorsque l'API renvoie un code d'état unifié. scène, c'est presque devenu la norme, donc je n'ai aucun moyen de l'ignorer, donc j'apprends aussi à l'utiliser. Quand j'utilise à nouveau PHP, je trouve que je n'ai pas l'habitude de ne pas avoir d'énumérations, donc j'ai envie de chercher. Énumérations PHP

Comme nous le savons tous, il existe deux options pour utiliser les énumérations en PHP L'une est la bibliothèque d'énumération officielle fournie dans SPL. Ne vous inquiétez pas, après avoir lu la documentation, vous constaterez que non seulement vous devez l'installer en tant qu'extension, mais que les méthodes qu'elle propose sont également très limitées. Nous choisissons donc généralement la deuxième méthode, qui consiste à utiliser une bibliothèque d'énumération tierce. En lisant le code source des énumérations tierces, vous constaterez également qu'elles ont plus ou moins l'ombre des énumérations Java. Mais s'ils avaient implémenté les fonctions d'énumération Java, il n'y aurait pas de bibliothèques et d'articles d'aujourd'hui.

J'ai vérifié de nombreuses énumérations et j'ai découvert qu'elles n'avaient pas toutes la fonction principale des énumérations Java, à savoir les valeurs d'attribut personnalisées (dans les énumérations Java, les énumérations ne définissent pas simplement des noms et des valeurs constantes, vous pouvez définir des attributs pour transporter des éléments dans l'énumération) En même temps, j'ai aussi trouvé qu'il n'est pas facile d'implémenter cette fonction en PHP, j'ai donc écrit une classe abstraite dans le projet pour implémenter la fonction de correction de deux attributs, car cela nécessite plusieurs Après en l'utilisant dans le projet, je l'ai mis sur github. Après de nombreuses reconstructions et renversant mes propres idées encore et encore, je me suis finalement rapproché de l'implémentation de l'énumération Java

Installation

.
composer require phpenum/phpenum
Copier après la connexion

Démarrage rapide

PHPEnum est très similaire aux énumérations Java, comme la définition d'une énumération qui représente le sexe

En Java :

public enum GenderEnum {
    MALE(1, "male"),
    FEMALE(2, "female");

    private Integer id;
    private String name;

    GenderEnum(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }
}
Copier après la connexion

Utiliser PhpEnum :

class GenderEnum extends \PhpEnum\Enum
{
    const MALE = [1, 'male'];
    const FEMALE = [2, 'female'];

    private $id;
    private $name;

    protected function construct($id, $name)
    {
        $this->id = $id;
        $this->name->$name;
    }

    public function getId()
    {
        return $this->id;
    }
    
    public function getName()
    {
        return $this->name;
    }
}
Copier après la connexion

Vous constaterez que leur utilisation est également très similaire

En Java :

GenderEnum.values(); // enum instance array
GenderEnum.valueOf("FEMALE"); // enum instance
GenderEnum.MALE.equals(GenderEnum.valueOf("MALE")); // true
GenderEnum.MALE.name(); // MALE
GenderEnum.MALE.ordinal(); // 0
GenderEnum.MALE.toString(); // MALE
GenderEnum.MALE.getId(); // 1
GenderEnum.MALE.getName(); // male
Copier après la connexion

Utiliser PhpEnum :

GenderEnum::values(); // enum instance array
GenderEnum::valueOf('FEMALE'); // enum instance
GenderEnum::MALE()->equals(GenderEnum::valueOf('MALE')); // true
GenderEnum::MALE()->name(); // MALE
GenderEnum::MALE()->ordinal(); // 0
(string)GenderEnum::MALE(); // MALE
GenderEnum::MALE()->getId(); // 1
GenderEnum::MALE()->getName(); // male
Copier après la connexion

Pas seulement dans ce De cette manière, PhpEnum fournit également des fonctions avancées dans les sous-classes

GenderEnum::MALE()->idEquals(1); // true
GenderEnum::MALE()->NameEquals('male'); // true
GenderEnum::containsId(1); // 1
GenderEnum::containsName('male'); // 1
GenderEnum::ofId(1); // enum instance
GenderEnum::ofName('male'); // enum instance
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

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:segmentfault.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