// Unit enum - без скалярных значений
enum Suit {
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
// Backed enum - с привязкой к int или string
enum Status: string {
case Active = 'active';
case Inactive = 'inactive';
// Могут содержать методы
public function label(): string {
return match($this) {
self::Active => 'Активен',
self::Inactive => 'Неактивен',
};
}
}
// Backed enum: from/tryFrom
$s = Status::from('active'); // Status::Active
$s = Status::tryFrom('unknown'); // null
$s = Status::Active->value; // 'active'
Status::cases(); // все значения