[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rafael Lannes
Criador Rafael Lannes 30/05/2020

Opa, Carlos. Beleza?

Gostaria que você detalhasse melhor a opção de trabalhar organizando o código como você fez na construção da aplicação, usando  em comparação com a organização da api, implementando interfaces e repositories.

Eu poderia ter criado o sistema usando a mesma lógica da api e vice-versa, correto?

 

 

Manager Carlos Ferreira 30/05/2020

Olá, Rafael!
Tudo bem?

Sim, você pode usar Services e Repositories na aplicação também, exatamente como fizemos na API;

Foi essa mesmo a sua pergunta?

Carlos Ferreira
Criador Rafael Lannes 30/05/2020

É pq eu gostaria de entender melhor quando usar uma abordagem e quando usar outra.

Mesmo tendo entendido o conceito, ainda não consegui imaginar uma maneira de utilizar a abordagem da API, nos vídeos você fala em relação a mudança dos dados tipo doctine/eloquent, mas acredito que isso seja um universo bem incomum, não?

Pelo o que eu entendi até o momento em relação ao laravel, a forma mais prática e limpa seria usar o controller com repository setando o objeto e caso a regra de negocio seja extensa fazer um service pra deixar o controller mais enxuto. Meu entendimento está correto?

Rafael Lannes
Manager Carlos Ferreira 30/05/2020

Sim, é MUITO raro para não dizer quase inimaginável esse cenário.

A ideia de respositories também é organizar, e centralizar a gestão de dados em um único local. Pensa que precisa fazer uma query bem complexa, onde ela deve ficar?
No controller? Nem pensar. No model? Pode ser, mas vai deixar o model muito cheio. No repository? SIMMM! =D

-----

Sobre o seu raciocínio, ele está perfeito, é exatamente isso.

Se ainda tiver dúvidas amigo, pode me perguntar o que quiser, até esclarecer tudo.

Carlos Ferreira
Criador Rafael Lannes 30/05/2020

Show, obrigado pelos esclarecimentos.

Eu entendi que essa maneira de interfaces e repositories é uma convenção no laravel, vi em outros cursos seu e também muito em artigos gringos também. Mas a minha opinião pessoal até o momento é que é muita estrutura pra alguns projetos que as vezes se torna confuso essa implementação.

Sobre o que você falou da regra de negocio, nesse curso do larafood abriu minha mente ainda mais pra outras opções, como por exemplo Observers em regras de cadastro/alteração e a camada de Services. Então, por exemplo, caso houvesse uma query complexa eu poderia fazê-la no Service para deixar o controller mais enxuto, igual foi demonstrado na aplicação.

Então, utilizando o service nessa situação, substituiria a função do repository e eu não precisaria fazer a implentação da interface. 

Em resumo, essa maneira foi a que eu mais me 'acostumei' em estruturar o codigo, essa forma de fazer, de alguma forma 'fere' algum psr do php/laravel?

 

 

Rafael Lannes
Manager Carlos Ferreira 30/05/2020

Sim, super concordo com você, para projetos pequenos na realidade não faz nem sentido trabalhar com isso, porque gera muita parametrização inicial.

-----

A camada service fica a lógica, como foi no caso do LaraFood para a parte de gerar pedido (new order), tem muitos processos (desde calcular os preços até formatar os produtos), nesse caso o nosso controller ficou enxuto, e service ficou com a lógica e o repository ficou com a parte de banco de dados. Se tiver uma query bem grande, onde fica? No repository.

A ideia de repository e services são diferentes. Service layer: lógica, repository: dados.

Carlos Ferreira
Criador Rafael Lannes 30/05/2020

Show, carlos. Obrigado pelos esclarecimentos

Rafael Lannes
Erick Li 30/05/2020

Show, 
Eu estou aprendendo muito , mais muito mesmo.

Tenho um sistema de escola infantil, agora vou ter q reescrever todo, depois desse curso, principalmente a parte de API para o APP

 

Obrigado.

Erick Li
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!