Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Traits ou classe com métodos estáticos

Olá,

Fiquei com dúvida sobre as diferenças entre essas duas abordagens:

pelo o que entendi, tanto posso criar classe com métodos estáticos, quanto criar traits. Quando utilizar uma ou outra?

Imaginei que eu tenho um método que será usado por outras classes, por exemplo: um método para buscar um endereço mediante um cep. Método que eu poderia utilizar tanto numa classe Cliente, quanto numa classe Pedido, ou Empresa... também poderia ter um método para validar cpf e outro para validar cnpj...

Eu posso ter vários métodos estáticos em uma classe. Posso ter também várias funções em uma classe Trait?

Quando utilizar um ou outro?

2 respostas
solução

Fala, Ivan.

Eu evito métodos estáticos a todo custo. São difíceis de testar (não dá pra fazer mock).

Eu raramente utilizo traits também. No caso do Laravel, são traits do próprio framework. Eu escrevo traits em casos bem específicos. No curso de MVC eu escrevo 2. Lá tem uma motivação pra isso.

Pra eu decidir escrever traits:

  • Uma funcionalidade vai ser utilizada em várias classes?
    • Senão, não uso traits
  • Faz sentido ter uma classe com essa funcionalidade, ou é algo muito específico e pequeno?
    • Se fizer sentido ter uma classe, não uso traits

Se for uma funcionalidade pequena usada por várias classes, onde não faz sentido ter uma classe separada, aí uso traits.

Só reforçando: Eu evito métodos estáticos a todo custo!

Obrigado!