Como os PHP Attributes Mudaram Minha Forma de Escrever Livewire
Escrevo componentes Livewire há anos e adoro o framework. Ele faz pelo PHP full-stack o que nada mais conseguiu: permite construir interfaces interativas sem sair da linguagem que eu realmente gosto de programar.
Mas, sendo honesto, por muito tempo os componentes Livewire tinham um certo "cheiro" estranho. Você abria uma classe e encontrava uma parede de metadados no topo: uma propriedade $rules aqui, um array $listeners ali, um $queryString acolá, além de um método mount() fazendo três coisas diferentes. A lógica do componente ficava enterrada sob sua própria configuração.
Então surgiram os PHP Attributes. O Livewire os adotou totalmente e, sinceramente, não tem como voltar atrás.
O Jeito Antigo
Antigamente, um componente Livewire típico tinha diversas preocupações flutuando no topo da classe, completamente desconectadas umas das outras. As regras de validação de uma propriedade ficavam dez linhas abaixo da própria propriedade. O listener de um método era declarado como uma string em um array, longe do método real. Nada dizia à sua IDE que essas coisas estavam relacionadas.
A Nova Era
Com os atributos, cada pedaço de metadado agora está anexado àquilo que ele realmente descreve. As regras de validação ficam logo acima da propriedade que validam. O listener de evento fica logo acima do método que ele dispara. A sincronização de URL fica logo acima da propriedade sincronizada.
Não é mais necessário manter um mapa mental na cabeça. Você lê o código de cima para baixo e o significado está ali. Não se trata apenas de estética; trata-se de como o cérebro processa o código meses depois. A classe torna-se autodocumentada.
Propriedades Computadas e Ganhos na IDE
Uma das melhores descobertas é o atributo #[Computed]. Ele faz o cache do resultado durante a requisição, então acessar uma propriedade que consulta o banco de dados várias vezes na sua view ainda resultará em apenas um acesso ao banco. Isso substitui a inicialização preguiçosa (lazy initialization) manual por um simples atributo.
Além disso, IDEs como o PHPStorm entendem os atributos. As relações agora são estruturais, não coincidentes. As ferramentas podem raciocinar sobre eles e os analisadores estáticos podem detectar erros nos argumentos. Você não está mais escrevendo uma configuração que finge ser código; você está escrevendo código real que atua como configuração.
Conclusão
Os atributos resolveram um problema real com o qual eu tinha apenas aprendido a conviver. O Livewire baseado em atributos que escrevo hoje é, genuinamente, o PHP interativo mais limpo que já entreguei. Se você ainda escreve arrays de $rules e protected $listeners, faça um favor a si mesmo: escolha um componente, refatore-o para atributos e veja como se sente.
Este artigo foi publicado originalmente em bert.gent em 24 de maio de 2026.