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.

Subscribe to Blog do Van Neves

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe