Dica de PHP · publicada em
O padrão comum é usar strings soltas: 'pendente', 'processando', 'concluido'. O problema é que 'concluído' com acento, ou 'Concluido' com maiúscula, passam sem reclamação e quebram a comparação.
Um enum com valor de apoio (backed enum) resolve: o tipo garante que só valores válidos circulem, a IDE autocompleta, e tryFrom() converte string externa devolvendo null quando o valor não existe — perfeito para validar dado vindo de requisição.
Você ainda pode colocar métodos no enum, o que é ótimo para o rótulo traduzido ou a cor do badge no admin.
enum StatusPedido: string {
case Pendente = 'pendente';
case Processando = 'processando';
case Concluido = 'concluido';
public function rotulo(): string {
return match($this) {
self::Pendente => 'Aguardando',
self::Processando => 'Em separação',
self::Concluido => 'Concluído',
};
}
}
$status = StatusPedido::tryFrom($_POST['status'] ?? ''); // null se invalido
Na prática: tryFrom() para validar entrada externa: devolve null em vez de explodir.