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
- Use
@property
para atributos reais do banco de dados que podem ser modificados. - Use
@property-read
para acessadores e relacionamentos. - Sempre tipifique as propriedades corretamente.
- 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.