Enums in PHP 8.1 – feste Werte typsicher modellieren
Status als "offen"/"bezahlt"-Strings sind fehleranfällig – ein Tippfehler fällt erst zur Laufzeit auf. PHP-8.1-Enums geben dir feste, typsichere Werte mit Methoden, und die IDE meckert sofort.
Einen Bestellstatus als String "paid" durch die App zu reichen, ist eine Einladung für Tippfehler – "payed" fällt erst zur Laufzeit auf, wenn überhaupt. Seit PHP 8.1 gibt es echte Enums: ein fester Satz benannter Werte, den der Typ-Check erzwingt.
Backed Enum mit Methode
Ein „backed" Enum hängt an jedem Fall einen skalaren Wert (hier einen String für die Datenbank) und kann eigene Methoden mitbringen:
enum Status: string
{
case Offen = 'open';
case Bezahlt = 'paid';
case Storniert = 'cancelled';
public function label(): string
{
return match ($this) {
Status::Offen => 'Offen',
Status::Bezahlt => 'Bezahlt',
Status::Storniert => 'Storniert',
};
}
}Typsicher verwenden
Als Parametertyp akzeptiert die Funktion jetzt nur gültige Fälle – ein falscher String kommt gar nicht erst durch:
function darfBearbeiten(Status $status): bool
{
return $status === Status::Offen;
}
echo Status::Bezahlt->label(); // "Bezahlt"
echo Status::Bezahlt->value; // "paid" (für die DB)Aus der Datenbank zurücklesen
from() wandelt einen gespeicherten Wert zurück in einen Fall (und wirft bei Unbekanntem); tryFrom() liefert stattdessen null:
$status = Status::tryFrom($row['status']) ?? Status::Offen;
foreach (Status::cases() as $s) { // alle Fälle, z. B. fürs Dropdown
echo "<option value=\"{$s->value}\">{$s->label()}</option>";
}Der Gewinn: Ein ungültiger Status ist nicht mehr möglich, ohne dass es sofort auffällt – die IDE schlägt dir alle Fälle vor, und ein vergessener Fall im match wird zum Fehler statt zum stillen Bug.
Saubere, typsichere Modellierung macht Backends wartbar. Genau solche baue ich – schau auf bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
?? und ?-> in PHP – null-Werte elegant abfangen
Endlose isset()-Prüfungen? Mit dem Null-Koaleszenz-Operator ?? und dem Nullsafe-Operator ?-> greifst du sicher auf womöglich fehlende Werte zu – oft in einer einzigen Zeile.
Das match-Ausdruck in PHP 8 – switch, nur besser
match ist wie switch, aber ein Ausdruck mit Rückgabewert, striktem Vergleich und ohne break-Fallen. Für Zuordnungen ist es kürzer, sicherer und besser lesbar.
Eingaben validieren mit filter_var – E-Mail, URL und Zahlen
Nie blind einer Nutzereingabe vertrauen. filter_var prüft E-Mail-Adressen, URLs und Zahlen mit eingebauten Filtern – zuverlässiger und lesbarer als selbstgebaute Regex.