Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Camada de serviços

Olá mestre Vinicius,

Nas minhas pesquisas sobre MVC vejo com frequência falarem sobre a camada de serviços, atualmente é mais frequente termos essa camada extra? É verdade que com a camada de serviços nossos controllers não podem ter acesso ao model e por fim você poderia dar sua definição pessoal para essa camada( qual a real responsabilidade dela) ?

5 respostas
solução!

Opa, Diego. Sempre adoro suas perguntas!

Então, a camada de serviços é responsável por orquestrar as regras de negócio definidas na camada de modelo. Ou seja, chamar os repositórios, os métodos das entidades, etc.

A vantagem de ter serviços, basicamente, é: Se você tem um Controller que insere um curso no banco de dados com todo o código pra incluir esse curso dentro desse controller, se você depois precisar criar um comando (para CLI) que faça a mesma coisa, vai precisar duplicar esse código.

Utilizando serviços você vai poder reutilizar a classe tanto no controller quanto no comando. ;-)

Massa Vinicius,

No caso do nosso projeto para salvar um curso, se eu entendi bem, teríamos:

1 - Uma classe CourseService

2- Nesse CourseService um método storageCourse(string $description) :bool com todas as instruções de como salvar um curso no banco de dados.

3- Em nosso controller de Persistencia chamariamos o storageCourse e caso retorne true apenas redirecionariamos o usuário.

Esse é um caminho?

Basicamente isso aí, DIego. Eu só não chamaria a classe de CourseService porque isso remete a uma classe com muitas responsabilidades.

Provavelmente eu chamaria de algo como CoursePersister ou CourseSaver

Bacana Vinicius, irei implementar essas alterações em um projeto de revisão que estou fazendo, além de estudar mais sobre essas questões.

Eu observei que o controller pode ficar muito grande, com diversas tarefas, mesmo em projetos pequenos como esse. Na minha visão o MVC pode tornar-se um anti pattern em mãos erradas (programadores sem sólidos conhecimentos de OOP, etc..). A minha analogia é com o efeito placebo, onde o "cabra" acha que está tomando doses de OOP, mas na verdade ainda está injetando doses letais de procedural em seu corpo e sentindo-se bem.

Brincadeiras a parte, grato mais uma vez pelas respostas.

hahahahah

Muito bom, Diego. É exatamente.

MVC é um otimo primeiro passo para o estudo de arquitetura mas não pode ser o último.

Você já tá indo pra uma linha bem legal de estudos e já já vai esbarrar em Clean Architecture e Arquitetura Hexagonal.

Abração e bons estudos.