Dica de PHP · publicada em
O switch usa comparação solta: case 0 casa com a string "texto" em versões antigas do PHP, e esquecer um break faz o código cair no próximo caso. Os dois já causaram bug em código de produção.
O match compara de forma idêntica (tipo e valor), é uma expressão que retorna valor, e lança UnhandledMatchError se nenhum braço casar — o que é bom: um status novo aparece como erro visível em vez de virar comportamento silencioso.
Em plugin WordPress ele brilha nos mapeamentos: status de pedido para rótulo, tipo de campo para função de sanitização, código de erro para mensagem.
$rotulo = match ($pedido->get_status()) {
'pending', 'on-hold' => 'Aguardando pagamento',
'processing' => 'Em separação',
'completed' => 'Concluído',
default => 'Status desconhecido',
};
Na prática: usa match para mapear valor a valor. Só lembra do default se não quiser exceção em caso novo.