Expresia match (Succesorul Modern al lui switch în PHP 8) în PHP

Ghid complet pentru expresia match în PHP 8: comparare strictă (===), returnare directă de valoare, tratarea excepțiilor UnhandledMatchError și ramuri multiple.

Sintaxă
$rezultat = match($valoare) { 1 => 'Unu', 2, 3 => 'Doi sau Trei', default => 'Altceva' };

Expresia match, introdusă în PHP 8.0, este succesorul modern și sigur al clasicei instrucțiuni switch. Spre deosebire de switch, care realizează o comparare slabă de tipuri (==) și necesită instrucțiuni repetitive break pentru a preveni căderea accidentală în următoarea ramură (fall-through), match este o expresie care returnează direct o valoare și utilizează întotdeauna compararea strictă de tipuri (===).

Exemplu: Maparea statusului HTTP folosind expresia match
<?php

declare(strict_types=1);

$codStatusHttp = 404;

// match returnează direct valoarea și poate fi atribuit unei variabile
$mesaj = match ($codStatusHttp) {
    200, 201 => 'Cerere procesată cu succes.',
    400       => 'Date transmise incorect (Bad Request).',
    401, 403 => 'Acces restricționat sau neautorizat.',
    404       => 'Resursa solicitată nu a fost găsită pe server.',
    500, 502, 503 => 'Eroare internă de server.',
    default   => 'Cod HTTP necunoscut.',
};

echo $mesaj; // Output: Resursa solicitată nu a fost găsită pe server.

Diferențe Fundamentale: match vs. switch

Criteriu Expresia match (PHP 8+) Instrucțiunea switch (veche)
Tip de comparare Strictă (===): 0 nu se potrivește niciodată cu '0' sau false. Slabă (==): predispusa la bug-uri subtile de conversie automată.
Valoare returnată Este o expresie care returnează o valoare directă (poate fi salvată în variabilă). Este o instrucțiune de control al fluxului; nu returnează valori.
Instrucțiunea break Nu este necesară (oprește execuția imediat ce găsește prima potrivire). Obligatorie după fiecare case (risc de cădere în cascada următoare).
Cazul default Aruncă excepția UnhandledMatchError dacă nicio ramură nu se potrivește și lipsește default. Ignoră silențios cazul neacoperit dacă lipsește default.