ADVERTENCIA Si está utilizando PHP 8.1 o superior, le recomendamos que use Php enums nativos en lugar de este paquete.
Podemos lanzar algunos parches de mantenimiento, pero el soporte para este paquete se está suspendiendo de otra manera.
Siéntase libre de desembolsar nuestro código y adaptarlo a sus necesidades.
Esta biblioteca proporciona una implementación de enumeración / enumeración para PHP.
map() . Primero cree una nueva clase que se extienda RexlabsEnumEnum y haga lo siguiente;
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"] Para instalar en su proyecto:
composer require rexlabs/enum Ahora puede escribir su objeto Enum como dependencia:
<?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" Cada instancia de Enum proporciona los siguientes métodos:
Devuelve el nombre constante.
$ enum -> name (); Devuelve el valor/clave asignado a la constante en la declaración de const MY_CONST = 'key' .
$ enum -> key (); Devuelve el valor (if-cualquier) que se asigne (en la matriz devuelto por map() ). Si no se asigna ningún valor, este método devuelve null .
$ enum -> value ();Devuelve verdadero si esta instancia es la misma que la tecla constante dada o la instancia de enumeración.
$ enum -> is (City:: SYDNEY ); // Compare to constant key
$ enum -> is (City:: SYDNEY ()); // Compare to instance El método __toString() se define para devolver el nombre constante.
( string )City:: SYDNEY (); // "SYDNEY" Devuelve una matriz que mapea las claves constantes a un valor. Este método se puede implementar opcionalmente en una subclase. La implementación predeterminada devuelve una matriz de claves asignadas a null .
Devuelve una matriz de instancias de enum.
Devuelve una matriz de claves constantes.
Devuelve una matriz de valores definidos en map() . Si map() no se implementa, entonces se devolverá una matriz de valores nulos.
Devuelve una matriz de todos los nombres constantes declarados con la clase.
Devuelve una matriz asociativa de constant_name => clave, para todos los nombres constantes declarados dentro de la clase.
Devuelve la clave para el nombre constante dado.
Devuelve el nombre constante de la clave dada (el inverso de keyForName ).
Devuelve el valor (o nulo si no se mapea) para la clave dada (como se declara en el método map() ).
Devuelve la clave para el valor dado (como se declara en el método map() ).
Nota: Si los valores duplicados están contenidos dentro del método
map(), solo se devolverá la primera clave.
Cree una instancia de este enume desde el nombre constante dado.
Cree una instancia de este enum de la clave dada.
Devuelve verdadero si existe la clave dada.
Devuelve verdadero si el nombre constante dado (sensible al caso) se ha declarado en la clase.
Lanza a RexlabsEnumExceptionsInvalidKeyException si la tecla dada no existe.
Para ejecutar pruebas:
composer testsPara ejecutar el informe de cobertura:
composer coverage El informe de cobertura se emite a ./tests/report/index.html
Las contribuciones son bienvenidas, envíe una solicitud de extracción o cree un problema. Su código enviado debe formatearse utilizando estándares PSR-1/PSR-2.