Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

517
Vistas
¿Cómo obtener todos los valores de una enumeración en PHP?

PHP 8.1 está a punto de ser lanzado, incluido el soporte para Enumeraciones. Estaba probando parte de la funcionalidad de enumeración y no pude encontrar mucha documentación al respecto. De ahí mi pregunta: ¿cómo obtengo todos los valores de una enumeración?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Después de algunas investigaciones encontré la respuesta . Puede usar el método estático: cases() .

 enum Status { case PAID; case Cancelled; } Status::cases();

El método de casos devolverá una matriz con una enumeración (interfaz UnitEnum ) para cada valor.

over 4 years ago · Santiago Trujillo Denunciar

0

Además de UnitEnum::cases() , puede usar ReflectionEnum con este

 $reflection = new ReflectionEnum(Status::class); $reflection->getCases();

tenga en cuenta que en ambos casos no podrá obtener los métodos de enumeración. pero siempre que ReflectionEnum amplíe ReflectionClass para que pueda usar el resto de los métodos de ReflectionClass como getMethods

over 4 years ago · Santiago Trujillo Denunciar

0

¿Necesita los valores y no las instancias de Enum?

Escribí un paquete de Composer para esto, othyn/php-enum-enhancements , ya que el UnitEnum::cases() no era lo que estaba buscando, ya que devuelve una matriz de instancias de MySuperCoolEnum en lugar de los valores subyacentes como su tipo crudo, que es lo que quería.

Es un rasgo que se puede agregar fácilmente a cualquier enumeración que haga lo siguiente:

  • Agrega un nuevo UnitEnum::valueArray(): array estático que devuelve todos los valores dentro de una Enum como una matriz de valores de Enum del mismo tipo

  • Agrega un nuevo método estático UnitEnum::valueList(string $separator = ', '): string que devuelve todos los valores dentro de un Enum como una cadena de lista separada por comas

En el que produce lo siguiente para Enum normales :

 <?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" // } 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"

... y lo siguiente para Backed Enum's, siendo el siguiente un ejemplo de string :

 <?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" // } 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"

... y sí, ¡también funciona en int !

Hay más ejemplos en la parte de uso del archivo README del paquete .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda