Avatar ·

Como implementar corretamente Enum em PHP sem suporte nativo?

Olá a todos! Sou um desenvolvedor PHP iniciante e me deparei com um problema. Em outras linguagens (Java, C#) existe uma construção conveniente enum que permite definir um conjunto fixo de constantes. Por exemplo, status de pedido: "novo", "em processamento", "enviado", "entregue".

No PHP não encontrei um enum nativo. Tentei usar constantes de classe comuns:

class OrderStatus {
    const NEW = 'new';
    const PROCESSING = 'processing';
    const SHIPPED = 'shipped';
    const DELIVERED = 'delivered';
}

$status = OrderStatus::NEW;

Mas isso não é conveniente. Não consigo verificar se a variável $status contém apenas um dos valores permitidos. É possível atribuir acidentalmente $status = 'invalid_status', e nenhum erro