Un paquete Composer para PHP que agrega algunas características de enumeración útiles al nuevo y glorioso tipo PHP Enum.
El paquete hasta ahora proporciona;
UnitEnum::valueArray(): array
que devuelve todos los valores dentro de una enumeración como una matriz de valores de enumeración del mismo tipo.UnitEnum::valueList(string $separator = ', '): string
que devuelve todos los valores dentro de una enumeración como una cadena de lista separada por comasEl paquete está disponible en Packagist como othyn/php-enum-enhancements.
Ingrese al proyecto en el que desea instalarlo y ejecute el siguiente comando de Composer para obtener la última versión:
composer require othyn/php-enum-enhancements
Para obtener ejemplos de uso más completos, puede ver el conjunto de pruebas. Sin embargo, mostraré algunos ejemplos de uso básicos a continuación.
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestEnum
{
use EnumEnhancements;
case Alpha;
case Bravo;
case Charlie;
case Delta;
case Echo;
}
var_dump (TestEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// string(5) "Alpha"
// [1]=>
// string(5) "Bravo"
// [2]=>
// string(7) "Charlie"
// [3]=>
// string(5) "Delta"
// [4]=>
// string(4) "Echo"
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestEnum
{
use EnumEnhancements;
case Alpha;
case Bravo;
case Charlie;
case Delta;
case Echo;
}
var_dump (TestEnum:: valueList ());
// Results in the following being printed:
// string(34) "Alpha, Bravo, Charlie, Delta, Echo"
var_dump (TestEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(30) "Alpha:Bravo:Charlie:Delta:Echo"
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestStringBackedEnum: string
{
use EnumEnhancements;
case Alpha = ' alpha ' ;
case Bravo = ' bravo ' ;
case Charlie = ' charlie ' ;
case Delta = ' delta ' ;
case Echo = ' echo ' ;
}
var_dump (TestStringBackedEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// string(5) "alpha"
// [1]=>
// string(5) "bravo"
// [2]=>
// string(7) "charlie"
// [3]=>
// string(5) "delta"
// [4]=>
// string(4) "echo"
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestStringBackedEnum: string
{
use EnumEnhancements;
case Alpha = ' alpha ' ;
case Bravo = ' bravo ' ;
case Charlie = ' charlie ' ;
case Delta = ' delta ' ;
case Echo = ' echo ' ;
}
var_dump (TestStringBackedEnum:: valueList ());
// Results in the following being printed:
// string(34) "alpha, bravo, charlie, delta, echo"
var_dump (TestStringBackedEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(30) "alpha:bravo:charlie:delta:echo"
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestIntBackedEnum: int
{
use EnumEnhancements;
case One = 1 ;
case Two = 2 ;
case Three = 3 ;
case Four = 4 ;
case Five = 5 ;
}
var_dump (TestIntBackedEnum:: valueArray ());
// Results in the following being printed:
// array(5) {
// [0]=>
// int(1)
// [1]=>
// int(2)
// [2]=>
// int(3)
// [3]=>
// int(4)
// [4]=>
// int(5)
// }
<?php
namespace App Enums ;
use Othyn PhpEnumEnhancements Traits EnumEnhancements ;
enum TestIntBackedEnum: int
{
use EnumEnhancements;
case One = 1 ;
case Two = 2 ;
case Three = 3 ;
case Four = 4 ;
case Five = 5 ;
}
var_dump (TestIntBackedEnum:: valueList ());
// Results in the following being printed:
// string(13) "1, 2, 3, 4, 5"
var_dump (TestIntBackedEnum:: valueList (separator: ' : ' ));
// Results in the following being printed:
// string(9) "1:2:3:4:5"
La mayoría de los procesos de desarrollo están integrados en un contenedor Docker fácil de usar.
La configuración de proyectos .php-cs-fixer.dist.php
contiene las reglas que cumple este repositorio y se ejecutará en los directorios ./src
y ./tests
.
Para la aplicación remota del estilo, existe una acción de GitHub configurada para ejecutar automáticamente phpcsfixer
.
Para la aplicación del estilo local, existe un composer style
de script configurado para ejecutar phpcsfixer
.
Para pruebas remotas, existe una configuración de GitHub Action para ejecutar automáticamente el conjunto de pruebas en la rama main
o en las ramas PR.
Para pruebas locales, hay un contenedor Docker prediseñado que contiene una versión CLI de Alpine de PHP + PHPUnit + xdebug. Esto está configurado para probar el proyecto y se puede configurar mediante lo siguiente:
composer docker-build
Esto debería hacer que Docker Compose cree la imagen. Luego puede subir el contenedor a través de lo siguiente:
composer docker-up
Hay pruebas para todo el código escrito, que se pueden ejecutar mediante:
# PHPUnit with code coverage report
composer test
# PHPUnit with code coverage report, using local phpunit and xdebug
composer test-local
En esas pruebas, hay pruebas de funciones para una implementación del paquete lista para producción. Actualmente no existen pruebas unitarias.
También puedes abrir fácilmente un shell en el contenedor de prueba usando el comando:
composer docker-shell
Todos y cada uno de los cambios del proyecto para las versiones deben documentarse a continuación. El control de versiones sigue el estándar SemVer.
[Cambios de Git] Cambios en el archivo LÉAME.
var_dump
para demostrar los tipos resultantes dentro de la matriz devuelta por UnitEnum::valueArray()
.UnitEnum
dentro de los documentos en ejemplos de código donde no hay una enumeración de prueba. [Cambios de Git] Lanzamiento inicial.