Start · Sprachen · PHP · Kapitel · Enums (PHP 8.1+)
// Kapitel · PHP

Enums (PHP 8.1+)

Enums sind typsichere Wertelisten. Sie ersetzen die alte Konvention, Konstanten in Klassen zu bündeln.

Basic Enum

enum Status
{
    case Pending;
    case Active;
    case Suspended;
    case Deleted;
}

function updateUser(User $u, Status $newStatus): void
{
    $u->status = $newStatus;
}

updateUser($user, Status::Active);
// updateUser($user, 'active');  // TypeError

Backed Enum — mit skalarem Wert

Für Serialisierung (z. B. in DB oder JSON) brauchst du einen zugrundeliegenden Wert:

enum Status: string
{
    case Pending   = 'pending';
    case Active    = 'active';
    case Suspended = 'suspended';
    case Deleted   = 'deleted';
}

// Wert lesen
Status::Active->value;              // 'active'

// Aus Wert erzeugen
Status::from('active');             // Status::Active
Status::tryFrom('invalid');         // null (statt Exception)

// Alle Cases
foreach (Status::cases() as $s) {
    echo $s->name . ' = ' . $s->value . "\n";
}

Methoden in Enums

enum Status: string
{
    case Pending   = 'pending';
    case Active    = 'active';
    case Suspended = 'suspended';

    public function label(): string
    {
        return match ($this) {
            self::Pending   => 'Wartet auf Bestätigung',
            self::Active    => 'Aktiv',
            self::Suspended => 'Gesperrt',
        };
    }

    public function color(): string
    {
        return match ($this) {
            self::Pending   => 'yellow',
            self::Active    => 'green',
            self::Suspended => 'red',
        };
    }
}

echo Status::Active->label();   // Aktiv