Sweet-Enum: Turbinando Enums no Laravel

Posted on: March 16, 2026 01:26 AM

Posted by: Renato

Categories: Laravel

Views: 24

Sweet-Enum: Turbinando Enums no Laravel

Excelente tema para um artigo técnico, especialmente focado em Clean Code e produtividade no ecossistema Laravel.

Turbinando Enums no Laravel 11 com Sweet-Enum

Desde o PHP 8.1, os Enums se tornaram peças fundamentais para substituir constantes mágicas e garantir tipagem forte em nossas aplicações. No entanto, quem trabalha com Laravel sabe que, na hora de exibir esses valores em um formulário (Blade) ou retornar uma API, acabamos escrevendo muitos métodos repetitivos como label() ou description().

Para resolver isso de forma elegante, a biblioteca leocello/sweet-enum surge como uma solução baseada em PHP Attributes, trazendo metadados diretamente para a definição do Enum.

O Problema: O "Verbosismo" dos Enums Nativos

Sem uma biblioteca auxiliar, para dar uma descrição amigável a um Enum, você terminaria com algo assim:

PHP


    enum TypeProductEnum: string {
        case PHYSICAL = 'PHYSICAL';
        case DIGITAL = 'DIGITAL';

        public function description(): string {
            return match(this) {
                self::PHYSICAL => 'Produto Físico',
                self::DIGITAL => 'Produto Digital',
            };
        }
    }

Agora imagine repetir isso para 20 Enums diferentes. É aqui que o Sweet-Enum brilha.

A Solução: Metadados com Attributes

Com o sweet-enum, utilizamos o atributo #[SweetCase] para injetar informações diretamente nos cases. Veja como o código fica muito mais limpo e declarativo:

PHP



namespace App\Enums;

use Leocello\SweetEnum\{SweetCase, SweetEnum, SweetEnumContract};

enum TypeProductEnum: string implements SweetEnumContract
{
    use SweetEnum;

    #[SweetCase(description: 'Físico')]
    case PHYSICAL = 'PHYSICAL';

    #[SweetCase(description: 'Digital')]
    case DIGITAL = 'DIGITAL';
}

Por que usar o Sweet-Enum no seu projeto?

O uso dessa biblioteca oferece três vantagens principais para desenvolvedores Laravel:

1. Métodos Utilitários Prontos

Ao usar a trait SweetEnum, você ganha acesso imediato a métodos que facilitam a manipulação de dados:

  • TypeProductEnum::descriptions() : Retorna um array associativo ['VALOR' => 'Descrição'].

  • TypeProductEnum::values() : Retorna apenas os valores puros do Enum.

  • TypeProductEnum::PHYSICAL->description() : Acessa a descrição diretamente da instância.

2. Integração Fluida com o Blade

Esquecer de atualizar um select no frontend quando um novo case é adicionado no backend é um erro comum. Com esta biblioteca, o seu formulário se torna dinâmico:

HTML

<select name="type" class="form-control">
foreach(TypeProductEnum::descriptions() as value => label)
<option value="(( value ))">(( label ))</option>
endforeach
</select>

3. Suporte a Localização (I18n)

A biblioteca é inteligente o suficiente para buscar as descrições nos arquivos de tradução do Laravel (lang/). Se você definir a descrição como uma chave de tradução, ela fará o __() automaticamente para você.

Conclusão

Manter o código limpo e evitar a repetição de lógica (DRY - Don't Repeat Yourself) é essencial em projetos de longa duração. O leocello/sweet-enum transforma os Enums de simples listas de casos em objetos ricos em contexto, integrando-se perfeitamente às facilidades que o Laravel já nos oferece.


Gostou dessa dica? Se você está arquitetando sistemas em Laravel 11, essa biblioteca é uma daquelas ferramentas "mão na roda" que economizam horas de código boilerplate.


1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

Laravel (227) PHP (151) linux (124) Variados (110) Dicas (58) ubuntu (58) developer (48) postgresql (45) database (44) sql (42) Docker (32) front-end (31) mysql (31) devops (26) webdev (24) programming (23) aws (19) tecnologia (19) eloquent (19) dba (18) OUTROS (17) backend (16) laravelphp (16) debian (12) dev (12) reactjs (10) 100DaysOfCode (10) git (10) react (10) nginx (9) inteligencia-artificial (9) PHP Swoole (9) node (9) javascript (9) linux-tools (8) Architecture (8) vue (7) github (7) ciencia (7) nodejs (6) api (6) vscode (6) webservice (6) jwt (6) vim (6) windows (6) arquitetura (6) authentication (5) ia (5) reactnative (5) rest (5) DevSecOps (5) servers (5) apache (5) macox (5) s3 (5) Kubernetes (4) gitlab (4) opensource (4) mariadb (4) jenkins (4) shell (4) mongodb (4) angular (4) autenticacao (4) wsl (4) Swoole (4) lets-encrypt (4) query (4) Raspberry (4) angularjs (4) inteligenciadedados (4) Padrao de design (4) artigo (4) google (4) npm (4) openai (4) js (3) mysqli (3) Black Hat (3) RabbitMQ (3) educacao (3) intel (3) CMS (2) sail (3) script (3) performance (3) json (3) authorization (3) phpswoole (3) ddd (3) blade (3) terminal (3) log (3) mac (3) fedora (3) containers (3) ssh (3) bash (3) hardware (3) tests (3) macos (3) web (2) jobs (3) websocket (3) db (3) politica (3) Curisidades (2) Solid (2) zsh (2) Go (2) BigLinux (2) POO (2) LazyVim (2) gource (2) Python (2) Oauth2 (2) android (2) unix (2) magento (2) iot (2) ffmpeg (2) combustivel (2) webhook (2) microservices (2) bancodedados (2) tailwind (2) homeOffice (2) html (2) openswoole (2) artificialintelligence (2) security (2) auth (2) cron (2) phpunit (2) kube (2) multiple_authen (2) policia (2) neovim (2) golang (2) noticias (2) livros (2) Transcribe (2) ElonMusk (2) redis (2) claude (2) ArchLinux (2) java (2) saude (1) seguranca (2) phpfpm (2) autorizacao (2) monitoring (2) laptop (2) gnome (2) powerbi (2) telefonia (2) nvm (2) imagick (2) maps (2) colors (2) Passport (2) JQuery (2) front (1) wine (1) covid19 (0) services (1) phpjasper (1) models (1) kali-linux (1) geojson (1) yarn (1) picpay (1) Monolith (1) banco (1) PNPM (1) Desenvolvedor (1) Structurizr (1) symfony (1) presenter (1) lider (1) guard (1) tensorflow (1) bootstrap (1) nuance (1) historia (1) dropbox (1) traefik (1) bug (1) akitando (1) llm (1) htm (1) transformers (1) cavalotroia (1) odd (1) m1 (1) Error (1) cinnamon (1) repmgr (1) federal (1) ruby (1) AppSec (1) orm (1) ArquiteturaDeSoftware (1) Passwordless (1) memcached (1) flow (1) compression (1) athena (1) Migration (1) workflow (1) cqrs (1) kitematic (1) geospacial (1) yeshua (1) data (1) sonarqube (1) Axios (1) pipelines (1) Mozilla (1) kvm (1) GitOps (1) sqlite (1) podcast (1) n8n (1) LaravelFilament (1) God (1) DesenvolvimentoProfissional (1) sw (1) bigtech (1) postgres (1) NoCookies (1) LeetCode (1) governancadedados (1) prf (1) nosql (1) Lideranca (1) Hackers (1) Bots (1) pytorch (1) nuxt (1) liquid (1) ec2 (1) transaction (1) c4 (1) rancher (1) algoritimo (1) Observability (1) Elasticsearch (1) translate (1) certbot (1) Oh My Zsh (1) ibm (1) escopos (1) usb (1) ckeditor (1) API_KEY_GOOGLE_MAPS (1) Manjaro (1) vicuna (1) coding (1) rust (1) markdown (1) JasperReports (1) Fibonacci (1) community (1) Samurai (1) payment (1) messaging (1) Jesus (1) flutter (1) militar (1) fullsta (1) smartphones (1) automacao (1) Monitor (1) zend (1) spaceship (1) PKCE (1) l2tp (1) Glacier (1) laraveloctane (1) Deus (1) binaural (1) gpt (1) bolsonaro (1) privacidade (1) linkedin (1) documentation (1) brain (1) adb (1) nvidia (1) host (1) ecommerce (1) c4-models (1) altadisponibilidade (1) octane (1) lucena (1) http (1) TypeScript (1) chatgpt (1) idiomas (1) eventdrive (1) uuid (1) restfull (1) aplicativo (1) optimization (1) mapas (1) Fetch (1) collections (1) RustLang (1) matematica (1) Filament (1) compactar (1) paypal (1) microg (1) forcas armadas (1) cor (1) auth (1) modelagemdedados (1) k8s (1) gasolina (1) wsl2 (1) csv (1) soap (1) piada (1) KubeCon (1) zorin-os (1) spring-boot (1) backup (1) playwright (1) Deepin (1) storage (1) benchmark (1) networking (1) Swoole (1) biologia (1) node-red (1) LETSENCRYPT (1) Grunt (1) Diagramas (1) boot (1) haru (1) dracula (1) TrabalhoEmEquipe (1) Brasil (1) queue (1) agi (1) llama (1) hotfix (1) economia (1) transcription (1) cache (1) Amazon (1) October (1) lumen (1) Hyperf (1) replication (1) faceapp (1) vala (1) cloudstack (1) rpi (1) apple (1) oracle (1) iode (1) ffaa (1) vpn (1) MeioAmbiente (1) firefox (1) composer (1) scheduling (1) Asahi (1) pendrive (1) microservice (1) front (1) OOD (0) controllers (0)

New Articles



Get Latest Updates by Email