Dica de Código: Enums no PHP \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 15 Horas 

 33 Min 

 49 Seg 

   Tempo restante da oferta: 15 33 49 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Dica de Código: Enums no PHP  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

# 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!

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP.jpg)  

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!

[  ![PHP - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Curso PHP - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/php-fundamentos)

## 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 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:

```php
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.

```php
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.

[  ![PHP Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Curso PHP Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/php-avancado)

## 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`.

```php
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.

```php
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.

[  ![PHP - Recursos essenciais](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Curso PHP - Recursos essenciais Conhecer o curso ](https://www.treinaweb.com.br/curso/php-recursos-essenciais)

## Criando 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.

```php
$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.

```php
$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](https://www.treinaweb.com.br/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.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/BANNER-BLOG-2-2.jpg) ](https://api.whatsapp.com/send/?phone=5544988609539&text=Olá,+li+o+artigo+no+blog+e+gostaria+de+saber+mais+sobre+a+TreinaWeb.)

- [ #dica de código ](https://www.treinaweb.com.br/blog/tag/dica-de-codigo)
- [ #dica de código php ](https://www.treinaweb.com.br/blog/tag/dica-de-codigo-php)
- [ #Enums ](https://www.treinaweb.com.br/blog/tag/enums)
- [ #novidades php ](https://www.treinaweb.com.br/blog/tag/novidades-php)
- [ #enums no php ](https://www.treinaweb.com.br/blog/tag/enums-no-php)

Autor

 ![Elton Fonseca](//secure.gravatar.com/avatar/2cee05645357ced0841ce76ba5569c72?d=mm)

## Elton Fonseca

 Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. [@eltonfonsecadev](https://twitter.com/eltonfonsecadev) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/elton-fonseca)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     3 anos atrás

    ##  [ Dica de Código: Propriedades Somente Leitura no PHP ](https://www.treinaweb.com.br/blog/dica-de-codigo-propriedades-somente-leitura-no-php) 

     Descubra como utilizar as propriedades somente leitura no PHP 8.1 para criar código mais seguro e confiável.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Utilizando Enums com TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-utilizando-enums-com-typescript) 

     Desvende o poder dos Enums em TypeScript: código mais claro e robusto! Simplifique switch cases e reforce tipagem de objetos. Confira!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Métodos para trabalhar com arrays em TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-metodos-para-trabalhar-com-arrays-em-typescript) 

     Desvende os segredos dos arrays em JavaScript! Aprenda métodos poderosos para manipulação eficiente. Torne-se um mestre na arte do desenvolvimento.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Programação Assíncrona com CompletableFuture no Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-programacao-assincrona-com-completablefuture-no-java) 

     Domine a programação assíncrona com CompletableFuture no Java e impulsione o desempenho de sua aplicação. Leia agora!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Principais coleções do Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-principais-colecoes-do-java) 

     Explore as poderosas ferramentas do Java Collections Framework: List, Set e Map. Domine a manipulação de dados com eficiência!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     3 anos atrás

    ##  [ Dica de Código: Arrow Functions no PHP ](https://www.treinaweb.com.br/blog/dica-de-codigo-arrow-functions-no-php) 

     Aprenda a usar Arrow Functions no PHP para tornar seu código mais conciso e poderoso. Confira exemplos práticos e dicas essenciais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-HTML-CSS-400x280.jpg)  [ CSS ](https://www.treinaweb.com.br/blog/categoria/css) 

     3 anos atrás

    ##  [ Dica de Código: Conheça a propriedade CSS text-decoration ](https://www.treinaweb.com.br/blog/dica-de-codigo-conheca-a-propriedade-css-text-decoration) 

     Descubra o poder da propriedade CSS text-decoration: estilos únicos para seus textos front-end! Explore posições, estilos e personalizações!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Desestruturação em TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-desestruturacao-em-typescript) 

     Aprenda como a desestruturação em TypeScript simplifica o código e torna-o mais legível. Técnica essencial para desenvolvedores!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Expressões Lambda em Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-expressoes-lambda-em-java) 

     Aprenda como as expressões lambda simplificam o código Java ao criar instâncias de interfaces funcionais e veremos alguns exemplos de uso.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Trabalhando com Data e Hora no Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-trabalhando-com-data-e-hora-no-java) 

     Nessa dica de código veremos como podemos trabalhar com data e hora no Java, para isso veremos as classes do pacote java.time.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/temas-wordpress-400x280.jpg)  [ WordPress ](https://www.treinaweb.com.br/blog/categoria/wordpress) 

     10 anos atrás

    ##  [ Personalizar temas Wordpress sem alterar o código-fonte ](https://www.treinaweb.com.br/blog/personalizar-temas-wordpress-sem-alterar-o-codigo-fonte) 

     O Wordpress é o CMS mais usado do mundo. Veja algumas dicas sobre como personalizar seu site/blog utilizando temas premium.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/instalacao-do-vs-code-no-windows-linux-e-macos-400x280.png)  [ Ferramentas ](https://www.treinaweb.com.br/blog/categoria/ferramentas) 

     6 anos atrás

    ##  [ VS Code - O que é e por que você deve usar? ](https://www.treinaweb.com.br/blog/vs-code-o-que-e-e-por-que-voce-deve-usar) 

     O VS Code é um dos editores de código mais utilizados no mundo. Conheça melhor essa ferramenta e entenda o motivo de sua popularidade.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **15h 33min 49s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
