PHP 8.1 Enumerados
PHP por fin añade una de las características más deseadas por la comunidad: soporte nativo para enumerados
--
Pues sí, finalmente PHP ha añadido soporte nativo para los enumerados, una de las características que más solicitaba la comunidad de programadores pero que finalmente ya la tenemos entre nosotros.
¡Vamos a ver cómo trabajar con ellos!
Declaración de enumerados
Trabajar con enumerados es realmente sencillo ya que su sintaxis es muy parecida a la forma en que trabajamos con clases:
enum Locale {
case SPANISH;
case ENGLISH;
case FRENCH;
}
Esto nos permite no sólo encapsular una colección de valores, sino que además, podemos emplear el enumerado que hemos declarado para tipar las variables:
class User {
public function __construct(
public Locale $locale
) {}
}
Lo cual nos permitirá crear usuarios del siguiente modo:
$user = new User(Locale::SPANISH);
Los enumerados son objetos. Comparación de enumerados
Los enumerados que declaramos mediante enum
son objetos creados con el patrón singleton, lo cual nos permite compararlos y obtener el resultado esperado:
$spanish = Locale::SPANISH;
$english = Locale::ENGLISH;
$locale = Locale::SPANISH;$locale === $spanish; // true
$locale === $english; // false
$locale instanceof Locale; // true
Métodos dentro de un enumerado
Al igual que las clases, los enumerados también pueden definir métodos, lo cual nos permite, por ejemplo, implementar la conversión del valor a una cadena de texto:
enum Locale {
case SPANISH;
case ENGLISH;
case FRENCH; public function flag(): string {
return match($this) {
self::SPANISH => '🇪🇸',
self::ENGLISH => '🇬🇧',
self::FRENCH => '🇫🇷'
};
}}