MWCodebymw.de ↗
PHP

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

#PHP 8#match#switch#Kontrollstrukturen#Sauberer Code

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 →