Enums define a fixed set of named values like Status::Active or Color::Red, introduced in PHP 8.1. Backed enums associate each case with a string or integer value. They replace magic strings with type-safe named options.
Enums (PHP 8.1)
// Pure enum
enum Status {
case Active;
case Inactive;
case Banned;
}
$s = Status::Active;
echo $s->name; // "Active"
// Backed enum (has a scalar value)
enum Color: string {
case Red = "red";
case Green = "green";
case Blue = "blue";
}
echo Color::Red->value; // "red"
$c = Color::from("green"); // Color::Green
$c = Color::tryFrom("purple"); // null
// Enum methods and interfaces
enum Suit: string {
case Hearts = "H";
case Diamonds = "D";
case Clubs = "C";
case Spades = "S";
public function label(): string {
return match($this) {
Suit::Hearts => "♥ Hearts",
Suit::Diamonds => "♦ Diamonds",
Suit::Clubs => "♣ Clubs",
Suit::Spades => "♠ Spades",
};
}
}
echo Suit::Hearts->label(); // ♥ Hearts