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 adicionados para tornar o processo de codificação mais suave e claro. 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, 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!
Curso PHP - Fundamentos
Conhecer o cursoIntroduçã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 definidos serão usados, 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:
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: PROCESSANDO
, PAGO
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.
Curso PHP Avançado
Conhecer o cursoObtendo 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 especificando 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.
Curso PHP - Recursos essenciais
Conhecer o cursoCriando estados do enum a partir de valores
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.
$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. Seja organizado, evite erros e escreva código mais limpo com enums no PHP. Seu código e seus colegas desenvolvedores agradecerão.
Se você deseja explorar ainda mais as novidades do PHP 8.1 e 8.2, não deixe de conferir nosso curso “PHP - Novidades do PHP 8.1 e 8.2”, o curso possui 01h12 de vídeos e ao termino do curso você terá acesso à um certificado de 4 horas.
Veja quais são os tópicos abordados durante o curso PHP - Novidades do PHP 8.1 e 8.2:
- O que são enums e como trabalhar com eles;
- Como trabalhar com propriedades e classes readonly;
- A utilização de intersecção de tipos e como usar em conjunto com união de tipos;
- Novos tipos: never, null, true e false;
- Os novos detalhes para trabalhar com constantes.