Pular para o conteúdo

Dica de Código: Enums no PHP

Descubra como os enums no PHP podem transformar seu código, tornando-o mais claro e eficiente. Otimize seu código agora!

Dica de Código: Enums no PHP – A busca constante por maneiras mais eficientes e legíveis de escrever código é uma constante na vida de desenvolvedores de software. Com a evolução das linguagens de programação, novos recursos são adicionais para tornar o processo de codificação mais suave e claro. Sobretudo um desses recursos são os enums no PHP, que foram adicionados a partir da versão 8.1 para facilitar a representação de valores fixos em seu código.

Neste artigo, primeiramente exploraremos o uso do enum no PHP e como ele pode melhorar a legibilidade do seu código. Veremos exemplos práticos de como definir, usar e tirar o máximo proveito desse recurso. Vamos começar!

Introdução aos enums no PHP

O enum é uma estrutura de dados que permite definir um conjunto limitado de valores nomeados. Em vez de usar constantes ou strings para representar valores fixos, como dias da semana ou status de um pedido, você pode usar enums para criar uma lista restrita de opções. Isso não apenas torna o seu código mais legível, mas também garante que apenas os valores terão uso, reduzindo erros de programação.

No PHP, você pode criar enums usando a palavra reservada enum e declarar os casos usando a palavra reservada case. Vamos dar uma olhada em um exemplo simples:Copiar

enum Status 
{
    case PROCESSANDO;
    case PAGO;
    case CANCELADO;
}

class Pedido
{
    public Status $status;
}

$pedido01 = new Pedido;

$pedido01->status = Status::PROCESSANDO;

if($pedido01->status == Status::CANCELADO) {
    echo 'Pedido cancelado';
} else {
    echo 'Pedido processando ou pago';
}

Neste exemplo, criamos um enum chamado Status com três casos possíveis: PROCESSANDOPAGO e CANCELADO. Em seguida, usamos esse enum como um tipo na classe Pedido. Isso garante que o valor da propriedade status esteja sempre dentro das opções válidas.

Usando namespace para enums no PHP

Os enums no PHP se comportam de maneira semelhante a classes, interfaces e traits, o que significa que você pode organizá-los em namespaces e carregá-los usando autoload. Isso é especialmente útil em projetos grandes e complexos.

namespace App\Enums;

enum Status 
{
    case PROCESSANDO;
    case PAGO;
    case CANCELADO;
    
    function estaCancelado()
    {
        return match($this) {
            Status::CANCELADO => 'Pedido Cancelado',
            Status::PROCESSANDO, Status::PAGO => 'Seu pedido será entregue em breve',
        };
    }
}

$meuStatus = Status::PROCESSANDO;

echo $meuStatus->estaCancelado();

Neste exemplo, o enum Status está no namespace App\Enums, o que facilita a organização do código em projetos maiores. Além disso, adicionamos um método estaCancelado() ao enum, mostrando como você pode adicionar lógica personalizada aos seus enums para torná-los ainda mais úteis.

Obtendo o nome de um estado dos enums no PHP

Às vezes, você pode precisar obter o nome de um estado do enum em seu código. Isso pode ser feito usando a propriedade name.

enum Status 
{
    case PROCESSANDO;
    case PAGO;
    case CANCELADO;
}

$meuStatus = Status::PROCESSANDO;

echo $meuStatus->name; // PROCESSANDO

Neste exemplo simples, pegamos o nome do estado do enum PROCESSANDO usando a propriedade name. Isso pode ser útil ao exibir informações de depuração ou ao trabalhar com valores de enums dinamicamente.

Definindo valores personalizados para estados do enum

Em alguns casos, você pode querer associar valores personalizados aos estados do enum, tornando-os mais descritivos para o usuário final. Isso pode ser feito sendo específico em um tipo de valor (string ou int) após o nome do enum.

enum Status: string 
{
    case PROCESSANDO = 'Pedido em processamento';
    case PAGO = 'Pedido pago';
    case CANCELADO = 'Pedido cancelado';
}

$meuStatus = Status::PROCESSANDO;

echo $meuStatus->value; // Pedido em processamento

Neste exemplo, definimos valores personalizados do tipo string para cada estado do enum. Isso torna os estados mais legíveis para os desenvolvedores e para qualquer pessoa que leia o código.

Criando estados do enum a partir de valores

Entretanto além de definir valores personalizados, você também pode criar estados do enum a partir de valores usando o método from(). Este método permite que você obtenha um estado do enum correspondente a partir de um valor especificado.

$meuStatus2 = Status::from('Pedido cancelado');
echo $meuStatus2->name; // CANCELADO

Neste exemplo, criamos um estado do enum CANCELADO a partir do valor 'Pedido cancelado' usando o método from().

Lidando com valores não encontrados

É importante observar que, se o valor passado para o método from() não for encontrado em nenhum dos casos do enum, ele lançará um erro fatal. Se você deseja lidar com essa situação de forma mais segura, pode usar o método tryFrom(), que retorna null se o valor não for encontrado.Copiar

$meuStatus3 = Status::tryFrom('Pedido cancelado');
echo $meuStatus3->name; // CANCELADO

Conclusão

O enum no PHP 8.1 é uma adição valiosa para melhorar a legibilidade e a segurança do seu código. Ao utilizar enums, você pode criar conjuntos limitados de valores nomeados, garantindo que seu código seja mais claro e menos propenso a erros. Além disso, com recursos como a definição de valores personalizados e métodos personalizados nos enums, você tem flexibilidade para atender às necessidades específicas do seu projeto.

Portanto, da próxima vez que você precisar representar valores fixos em seu código PHP, considere o uso de enums para tornar o processo mais simples e legível. Se organize, evite erros e escreva código mais limpo com enums no PHP. Seu código e seus colegas desenvolvedores agradecerão.

Leia também “Cloud Engineer Desvendando as Nuvens”

Dica de Código: Enums no PHP