Match ou switch em PHP?

No PHP 8 uma função ao estilo switch foi adicionada, essa função é a match

Match ou switch em PHP ?

Na versão 8 do PHP uma função nova função foi adicionada, essa função é a match . Em suma ela é uma melhoria da antiga switch, que além do PHP está presente em muitas linguagens. Este artigo lista alguns exemplos e diferenças das funções.

Um exemplo clássico do switch:

Exemplo equivalente usando match:

Menos código

Podemos notar que a expressão match precisa de menos código para ser escrita do que o switch,visto que não é necessário a utilização do comando break ao final de cada condição do match,pois esse comando já está implícito na função.Além disso, podemos colocar duas ou mais condições atribuídas a um mesmo valor usando vírgula e podemos receber o retorno da função através de uma variável.

Verificações estritas

O match, diferente do switch,usa comparações estritas, ou seja, não é possível comparar uma string com o número 3 e o número 3 em formato de string. Isso pode ser um problema inicialmente, pois essa exigência maior de tratamento de dados historicamente não está associada ao PHP.

Erros

Talvez a principal diferença do switch para o match seja o tratamento de erros, enquanto no switch erros não são retornados no match será lançada uma exceção do tipo UnhandledMatchError. Por isso geralmente encontramos exemplos do match sempre com a condição default como última opção, impedindo que a exceção seja lançada.

A única vantagem do switch

Para quem já usa PHP 8 a única vantagem que temos usando switch é realizar várias expressões por condição, ou seja quando o switch encontra uma combinação podemos executar várias linhas de código, recurso esse que o match não nos permite realizar. Segue o exemplo:

Diferenças em tabela

 

Switch 

Match 

Necessário PHP ^8.0

Não

Sim

Retorna um valor

Não

Sim

Suporte a condição default

Sim

Sim

Múltiplas condições

Sim

Sim

Múltiplas expressões por condição

Sim

Não

Break implícito

Não

Sim

Lança uma exceção quando não há combinação

Não

Sim

Comparação segura estrita de valores

Não

Sim

Comentários

Nome:

Email (não será publicado):

Comentário: