Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como proceder com um arquivo de "Controller"? Deveria estar na parte de Infraestrutura ou Aplicação?

Bom dia, professor por favor, fiquei com a seguinte dúvida:

Hoje estou implementando uma api com o Slim Framework, estou tentando utilizar a arquitetura deste curso (clean architecture). Se não estou enganado, você disse que uma classe "controller", que ligaria-se a classe de "rotas", seria ideal colocar na camada de "aplicação", que ela seria mais um "service" da aplicação do que de "infraestrutura".

No entanto, minha camada de controller precisaria acessar classes de repositório que fica na camada de infraestrutura, neste caso estaria quebrando a ideia de que a camada de aplicação não deve conhecer a camada de infraestrutura.

Como proceder? Não seria melhor utilizar uma classe controller na infraestrutura?

Obs: e a classe de rotas, eu acabei deixando ela fora da pasta "src", seria ideal colocar ela dentro de "infraestrutura"?

Espero que não tenha ficado confuso a pergunta

1 resposta
solução!

Ótima pergunta, Fábio.

Seu controller vai instanciar UseCases. Ex.: O UseCase InsertStudent. Esse UseCase vai depender da INTERFACE StudentRepository, ou seja, o UseCase que está na camada de aplicação depende de uma interface do domínio. Erro nenhum até aí.

Agora no seu container de injeção de dependências você vai configurar se a implementação de StudentRepository vai ser com PDO, Doctrine, etc. Ou seja, o detalhe de infraestrutura vai ser decidido nessa configuração da injeção de dependência, entende?

Quanto a "onde" deixar os Controllers, não há um consenso. Uns deixam em Infra, outros em App, outros criam uma "camada" específica pra eles. Eu prefiro criar uma camada chamada UI que vai ser responsável com as interações com o mundo exterior. :-)

Espero ter ajudado. :-D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software