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.
Der klassische switch hat zwei Tücken: Man vergisst leicht ein break (und fällt in den nächsten Fall durch), und er vergleicht locker (0 == "text" war lange true). PHP 8 bringt mit match eine saubere Alternative.
switch vs. match
// vorher – umständlich, break-anfällig
switch ($status) {
case 'paid': $label = 'Bezahlt'; break;
case 'open': $label = 'Offen'; break;
default: $label = 'Unbekannt';
}
// mit match – ein Ausdruck, direkt zugewiesen
$label = match ($status) {
'paid' => 'Bezahlt',
'open' => 'Offen',
default => 'Unbekannt',
};Drei Gewinne auf einen Blick: match gibt einen Wert zurück (du weist ihn direkt zu), es gibt kein Durchfallen (kein break nötig), und es vergleicht streng mit === – '1' trifft also nicht auf 1.
Mehrere Werte pro Zweig
Kommagetrennt fasst du Fälle zusammen:
$typ = match ($code) {
200, 201, 204 => 'Erfolg',
400, 404, 422 => 'Client-Fehler',
500, 502, 503 => 'Server-Fehler',
default => 'Sonstiges',
};Ein wichtiger Unterschied: Fehlt ein Zweig und kein default, wirft match eine UnhandledMatchError – statt still null zu liefern wie ein switch ohne Treffer. Das ist gewollt: Ein unbehandelter Fall ist meist ein Bug, den du sofort bemerken willst.
Für echte Verzweigungen mit mehreren Anweisungen pro Fall bleibt if/switch richtig – für saubere Zuordnungen ist match das modernere Werkzeug.
Gut lesbaren, sicheren PHP-Code schreibe ich in jedes Projekt. Wenn du eine Website mit eigenem Backend brauchst: 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.
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.
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.