AVERTISSEMENT Si vous utilisez PHP 8.1 ou supérieur, nous vous recommandons d'utiliser des énumérations PHP natives à la place de ce package.
Nous pouvons publier certains correctifs de maintenance, mais la prise en charge de ce package est autrement interrompue.
N'hésitez pas à alimenter notre code et à l'adapter à vos besoins.
Cette bibliothèque fournit une implémentation d'énumération / énumération pour PHP.
map() . Créez d'abord une nouvelle classe qui étend RexlabsEnumEnum et effectuez ce qui suit;
map() : <?php
namespace Rexlabs Enum Readme ;
use Rexlabs Enum Enum ;
/**
* Class City
*
* @package RexlabsEnumReadme
*
* @method static static BRISBANE()
* @method static static MELBOURNE()
* @method static static SYDNEY()
*/
class City extends Enum
{
const BRISBANE = ' Brisbane ' ;
const MELBOURNE = ' Melbourne ' ;
const SYDNEY = ' Sydney ' ;
// OPTIONAL - Provide a map() method if you would like to
// map additional data, which will be available from the ->value() method
public static function map (): array
{
return [
self :: BRISBANE => [ " state " => " QLD " , " population " => "" ],
self :: MELBOURNE => [ " state " => " VIC " , " population " => " 5m " ],
self :: SYDNEY => [ " state " => " NSW " , " population " => " 5m " ],
];
}
}
// Static access
echo City:: BRISBANE ; // "Brisbane"
echo City:: MELBOURNE ; // "Melbourne"
City:: names (); // (array)["BRISBANE", "BRISBANE", "SYDNEY"]
City:: keys (); // (array)["Brisbane", "Melbourne", "Sydney"]
City:: keyForName ( ' BRISBANE ' ); // "Brisbane"
City:: nameForKey ( ' Melbourne ' ); // "MELBOURNE"
City:: isValidKey ( ' Sydney ' ); // (boolean)true
City:: isValidKey ( ' Paris ' ); // (boolean)false
// Getting an instance - all return a City instance.
$ city = City:: BRISBANE ();
$ city = City:: instanceFromName ( ' BRISBANE ' );
$ city = City:: instanceFromKey ( ' Brisbane ' );
// Working with an instance
$ city -> name (); // "BRISBANE"
$ city -> key (); // "Brisbane"
$ city -> value ()[ ' population ' ]; // null - no value mapped
$ city -> is (City:: BRISBANE ); // (boolean)true
$ city -> is (City:: BRISBANE ()); // (boolean)true
$ city -> is (City:: SYDNEY ()); // (boolean)false
$ city -> isNot (City:: SYDNEY ()); // (boolean)true
$ city -> isAnyOf ([City:: BRISBANE ()]); // (boolean)true
$ city -> isNoneOf ([City:: BRISBANE ()]); // (boolean)false
// Or ...
City:: SYDNEY ()-> key (); // "Sydney"
City:: SYDNEY ()-> value (); // (array)["state"=>"NSW", "population"=>"5m"] Pour installer dans votre projet:
composer require rexlabs/enum Vous pouvez maintenant taper votre objet Enum en tant que dépendance:
<?php
function announceCity ( City $ city ) {
echo "{ $ city -> key ()} is located in { $ city -> value ()[ " state " ]} , population: { $ city -> value ()[ " population " ]}n" ;
}
// Get a new instance
announceCity (City:: SYDNEY ()); // "Sydney is located in NSW, population: 5m" Chaque instance d' Enum fournit les méthodes suivantes:
Renvoie le nom constant.
$ enum -> name (); Renvoie la valeur / clé attribuée à la constante dans la déclaration const MY_CONST = 'key' .
$ enum -> key (); Renvoie la valeur (if-any) qui est mappée (dans le tableau renvoyé par map() ). Si aucune valeur n'est mappée, cette méthode renvoie null .
$ enum -> value ();Renvoie True si cette instance est la même que la clé constante ou l'instance d'énumération donnée.
$ enum -> is (City:: SYDNEY ); // Compare to constant key
$ enum -> is (City:: SYDNEY ()); // Compare to instance La méthode __toString() est définie pour renvoyer le nom constant.
( string )City:: SYDNEY (); // "SYDNEY" Renvoie un tableau qui mappe les clés constantes d'une valeur. Cette méthode peut être éventuellement implémentée dans une sous-classe. L'implémentation par défaut renvoie un tableau de clés mappées sur null .
Renvoie un tableau d'instances d'énumération.
Renvoie un tableau de clés constantes.
Renvoie un tableau de valeurs définies dans map() . Si map() n'est pas implémenté, un tableau de valeurs nulles sera renvoyé.
Renvoie un tableau de tous les noms constants déclarés avec la classe.
Renvoie un tableau associatif de la clé constante_name =>, pour tous les noms constants déclarés au sein de la classe.
Renvoie la clé pour le nom constant donné.
Renvoie le nom constant de la clé donnée (l'inverse de keyForName ).
Renvoie la valeur (ou null si elle n'est pas mappée) pour la clé donnée (comme déclaré dans la méthode map() ).
Renvoie la clé pour la valeur donnée (comme indiqué dans la méthode map() ).
Remarque: si les valeurs en double sont contenues dans la méthode
map(), seule la première touche sera renvoyée.
Créez une instance de cette enum à partir du nom constant donné.
Créez une instance de cette énumération à partir de la clé donnée.
Renvoie vrai si la clé donnée existe.
Renvoie True si le nom constant donné (sensible à la cas) a été déclaré dans la classe.
Lance un RexlabsEnumExceptionsInvalidKeyException si la clé donnée n'existe pas.
Pour exécuter des tests:
composer testsPour exécuter le rapport de couverture:
composer coverage Le rapport de couverture est sorti à ./tests/report/index.html
Les contributions sont les bienvenues, veuillez soumettre une demande de traction ou créer un problème. Votre code soumis doit être formaté à l'aide des normes PSR-1 / PSR-2.