Enumeraciones (Enums)
Defina conjuntos de valores con seguridad de tipos mediante enumeraciones respaldadas y puras de PHP 8.1.
Enumeraciones (Enums) es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué son los enums?
PHP 8.1 introdujo los enums: un tipo especial que limita una variable a un conjunto predefinido de valores con nombre, lo que hace que el código sea más expresivo y seguro con respecto a los tipos.
Enum puro (Unit Enum)
Un enum puro tiene casos con nombre sin ningún valor asociado. Es ideal para estados, direcciones o estados de proceso.
<?php
enum Status {
case Active;
case Inactive;
case Banned;
}
$s = Status::Active;
echo $s->name; // "Active"Enum respaldado
Un enum respaldado asigna un valor escalar, entero o cadena, a cada caso; es útil para almacenar datos en bases de datos o devolverlos en respuestas de API.
<?php
enum Color: string {
case Red = "red";
case Green = "green";
case Blue = "blue";
}
echo Color::Red->value; // "red"From y TryFrom
Convierta un valor sin procesar de nuevo en un caso del enum con from() (lanza una excepción si no es válido) o tryFrom() (devuelve null si no es válido).
<?php
$color = Color::from("red"); // Color::Red
$maybe = Color::tryFrom("purple"); // nullEnums en declaraciones de tipos
Utilice enums como declaraciones de tipo para parámetros y valores de retorno; PHP garantiza que solo se puedan pasar casos válidos.
<?php
function paint(Color $color): void {
echo "Painting with ".$color->value;
}
paint(Color::Blue); // "Painting with blue"Casos de enum en match
Los enums funcionan especialmente bien con expresiones match para gestionar todos los casos posibles.
<?php
$label = match($status) {
Status::Active => "Active user",
Status::Inactive => "Inactive account",
Status::Banned => "Banned",
};
// PHP can warn if cases are unhandledUn enum implementa una interfaz
Los enums pueden implementar interfaces, lo que permite un comportamiento polimórfico.
<?php
interface HasLabel {
public function label(): string;
}
enum Status: string implements HasLabel {
case Active = "active";
case Inactive = "inactive";
public function label(): string {
return ucfirst($this->value);
}
}Métodos de los enums
Los enums pueden tener métodos, pero no constructores ni propiedades mutables.
<?php
enum Suit: string {
case Hearts = "H";
case Diamonds = "D";
case Clubs = "C";
case Spades = "S";
public function color(): string {
return match($this) {
Suit::Hearts, Suit::Diamonds => "red",
Suit::Clubs, Suit::Spades => "black",
};
}
}Constantes de los enums
Los enums pueden tener constantes, que no son casos, para representar valores escalares relacionados.
<?php
enum Direction {
case North;
case South;
const DEFAULT = self::North;
}Listado de casos
EnumName::cases() devuelve un array con todos los objetos de los casos del enum; es útil para generar opciones de listas desplegables.
<?php
$options = Color::cases();
foreach ($options as $c) {
echo $c->name.": ".$c->value."\n";
}Enums frente a constantes de clase
Los enums garantizan la seguridad de tipos: no puede pasar accidentalmente el entero 1 donde se espera un enum Status. Las constantes de clase no ofrecen esa garantía.
Resumen
Los enums representan conjuntos fijos de valores con seguridad de tipos. Utilice enums puros para estados y enums respaldados cuando necesite valores para bases de datos o API. Utilice tryFrom() para analizar valores de forma segura.
Comprobación rápida
¿Qué devuelve Color::tryFrom("invalid") si no coincide ningún caso?
Preguntas frecuentes
¿La lección «Enumeraciones (Enums)» es gratis?
Sí — el texto completo de «Enumeraciones (Enums)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Enumeraciones (Enums)»?
Defina conjuntos de valores con seguridad de tipos mediante enumeraciones respaldadas y puras de PHP 8.1. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Enumeraciones (Enums)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Expresión match y argumentos con nombre
- Operador nullsafe y tipos unión
- Enumeraciones (Enums)
- Fibers: concurrencia cooperativa