Como criar Enum em PHP
Antes de mais nada, o PHP não tem suporte nativo ao enum como estamos acostumados em outras linguagens, como em Java ou C#. Mas é possível um código que funciona de forma semelhante.
A forma que eu utilizo para criar enums é simples, eu crio uma classe com constantes, como no exemplo abaixo:
<?php
abstract class UserStatus
{
const BLOQUED = 0;
const ACTIVE = 1;
}
Então, para utilizar o "enum", também é simples:
<?php
if ($user->status === UserStatus::ACTIVE) {
//
}
Já que o PHP não tem enum de verdade, então por que utilizar uma classe ao invés de usar o explícito? Porque não diretamente if ($user->status)
? Porque utilizar dessa forma que demonstrei, deixa o código mais claro, diminui a chance de erro e facilita a manutenção.
Imagine que você está implementando um sistema que possui pagamento com diversos status, como:
<?php
abstract class PaymentStatus
{
const PENDING = 0;
const PROCESSING = 1;
const PAID = 2;
const CANCELED = 3;
const RETURNED = 4;
}
Agora fica bem mais claro usar if ($payment->status === PaymentStatus::PAID)
ao invés de if ($payment->status === 2)
. Mas você deve estar pensando "por que não usar string?", tipo if ($payment->status === 'paid')
. O problema de utilizar string é que pode conter erro de digitação, há um diferença entre letras maiúsculas e minúsculas, caso queira trocar o valor, tem que fazer manutenção em todo o código.