Laravel.Education
Acme Inc.

Melhorando a Legibilidade e Suporte de IDE em Modelos Laravel com @property e @property-read

08/08/2025

tags:

No desenvolvimento com Laravel, os modelos frequentemente lidam com propriedades resolvidas dinamicamente, como atributos Eloquent, casts e acessadores. Sem anotações explícitas, IDEs podem não reconhecer essas propriedades, afetando a experiência do desenvolvedor. Este artigo explora como usar @property e @property-read para melhorar o suporte de IDE e a legibilidade do código.

Por que Usar @property ou @property-read em Modelos Laravel?

Laravel gerencia muitas propriedades dinamicamente, mas IDEs não as reconhecem sem anotações explícitas. Definir essas anotações no PHPDoc do modelo pode melhorar o autocompletar, evitar chamadas desnecessárias de métodos e permitir que ferramentas de análise estática detectem erros de tipo.

Entendendo @property e @property-read

  • @property: Usado para propriedades legíveis e graváveis. Ideal para colunas de banco de dados que podem ser modificadas.
  • @property-read: Usado para propriedades somente leitura, como acessadores e relacionamentos.

Exemplos Práticos

/**
 * @property int $id
 * @property string $name
 * @property string $email
 * @property Carbon $created_at
 * @property Carbon $updated_at
 * @property-read string $full_name
 */
class User extends Model
{
    public function getFullNameAttribute()
    {
        return "{$this->first_name} {$this->last_name}";
    }
}

Neste exemplo, $full_name é um acessador somente leitura, enquanto os outros são propriedades graváveis.

Melhores Práticas

  1. Use @property para atributos reais do banco de dados que podem ser modificados.
  2. Use @property-read para acessadores e relacionamentos.
  3. Sempre tipifique as propriedades corretamente.
  4. Documente relacionamentos para melhorar o suporte da IDE.

Seguindo essas práticas, seus modelos Laravel serão mais limpos, legíveis e fáceis de manter.