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

Onde devo salvar as minhas classes em uma estrutura MVC?

Tendo em vista a estrutura MVC, com as pastas Controller, Model e View, onde devemos salvar as nossas classes descritas no curso, sendo que a princípio as mesmas não se encaixam nessas estruturas de pasta? Por exemplo, a classe FaturaController ficaria dentro da pasta controller, a FaturaModel ficaria dentro da pasta model e a fatura.phtml dentro da pasta view. Onde deveria salvar a classe GeradorDeFatura ou a EstadoDaFatura, por exemplo?

7 respostas

Oi Luiz, tudo bom?

Você pode separar essas classes em uma outra pasta do seu gosto, por enquanto. Algo como: Serviços, Util, Infra, etc

Opa, beleza André!

Mas devo colocar em qual nível da estrutura de pastas? Dentro do módulo, no mesmo nível da controller por exemplo, ou fora do módulo, no mesmo nível da library? Por que o "por enquanto" na sua resposta?

Pode colocar no mesmo nivel de controller e model mesmo.

Disse por enquanto porque, dependendo do conteudo das suas classes, você pode vir a encontrar um pattern que te leve a organizar as coisas de outra forma ;)

André,

Achei a sua resposta meio genérica, não existe algum tipo de convenção pra isso? Pastas abstract, interface, library ou algo do tipo? Serviços (service) sei que funciona para classes com ligações externas, do tipo que busca endereço nos correios ou carrega a api do maps, mas e para as demais classes do sistema que não se encaixam nessa categoria?

Um colega comentou em utilizar o padrão library, mas achei meio estranho termos 3 librarys, sendo que no casos em que temos sistemas modulados em /site e /admin, por exemplo, teríamos uma library dentro de cada módulo e mais uma na raiz do sistema.

Não existe nenhuma convenção pro PHP sobre essa estrutura de pastas? Não gostaria de usar nomenclaturas conforme meu gosto, gostaria de usar algo que fosse um padrão utilizado nos demais projetos do mercado, senão em todos, ao menos o que seja utilizado na maioria deles.

Geralmente as classes são colocadas nas Model do MVC, é um Modelo de Negocio, mas existem pessoas que saem deste padrão colocando em outras pastas como Soucer, src, entre outros

solução!

No caso do geradorDeFatura, poderia estar numa pasta para serviços (service). Arquivos Builder, costumam ir em uma pasta especifica builder. A mesma ideia se repete para outros patterns. O pattern MVC define os diretorios de Model, View e Controller. Outros patterns acabam sendo separados em outras pastas. Claro que não ha uma regra geral para isso também, existem diversas formas de se organizar um sistema. Seguir o nome do pattern é uma delas.

Obrigado André, chegamos a um consenso na minha empresa em usar uma pasta chamada Service mesmo, tentaremos usar o conceito de micro-serviços.