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

Dúvidas sobre MVC

MODEL Em Model acredito que ficam as Classes, + arquivos PHP relacionados à manipulação de BD. Eu trabalho com MySQL e MariaDB e estes exemplos com sqlite colocando arquivos do BD em uma pasta chamada infra dentro de src, ou uma pasta chamada var e dentro data, isto está me confundindo mais. Para mim, importa saber, onde coloco o arquivo que controla a conexão? o CRUD eu estou fazendo com PDO, não gosto de ferramentas como o Doctrine, prefiro fazer cada instrução SQL, testar, implementar métodos que chamem elas, etc.

VIEW Nesta parte é que estou ainda com mais dúvidas. Não consegui ainda entender como organizo a estrutura dos arquivos web (fonts, images, css e js), ficam onde? Tem como exemplificar a organização dos diretórios?

CONTROLLER Sobre o controlador, fazer um passo a passo da implementação com "POG", está me deixando com mais dúvidas do que como um processo de desenvolvimento organizado. Sigo roteiros e adapto para os meus projetos. Entendi que ela "liga as camadas pegando os dados do modelo (conexao, consultas), executando as regras de negócio (listar, inserir, excluir, atualizar, etc) e mandando os dados para serem exibidas na View". Mas, vimos que if funciona, mas não é recomendável. switch funciona, mas não é recomendável ou elegante.

3 respostas
solução!

Fala, Edson. Vamos por partes.

Primeiro, é importante ressaltar que o que aplicamos na Web como MVC não é o MVC real, como foi criado.

O que aplicamos é um padrão arquitetural mais amplo...

Agora respondendo específicamente: Model é a CAMADA onde tem sua regra de negócios e porventura, acesso a dados. Não necessariamente uma pasta Model precisa existir.

View é a CAMADA onde fica tudo necessário para exibir os dados ao usuário. Não necessáriamente precisamos de uma pasta chamada View.

Controller é a CAMADA que recebe a requisição em HTTP, encaminha a responsabilidade para a CAMADA Model realizar qualquer lógica necessária, e utiliza a View para devolver uma resposta em HTTP.

A estrutura de diretórios não é algo do MVC. Você pode organizar como preferir.

Baseado nas suas dúvidas específicas, EU organizaria assim (existem infinitas opções):

  • src/
    • Controller/
    • Entity/
    • Repository/
    • Service/
  • view/
  • public/
    • index.php
    • assets/

Na pasta view eu teria os templates (PHP, Twig, Plates, o que você preferir). Em public/assets eu deixaria meus arquivos JS, CSS e de imagens (a pasta públic seria acessível pelo servidor web nas configurações da minha infra.

Sua classe que cria uma conexão com PDO, eu colocaria, provavelmente, em Service/ConnectionCreator.php ou algo do tipo.

Dica: Use componentes de injeção de dependência.

Espero ter ajudado.

Excelente explicação. Já desenvolvi 5 aplicações web, mas não conhecia, nem utilizei nenhum Design Patterns. Estou adaptando as aplicações e meus novos projetos para seguir padrões de OO. É bastante trabalhoso, para quem está tendo que "reaprender" como analisar, planejar, criar, codar. Trabalho sozinho, desenvolvimento não é minha fonte de renda principal, mas já sou velho na área e não desisto.

É trabalhoso sim, Edson, mas em projetos maiores vale muito a pena. Hoje em dia eu trabalho em um projeto que é bastante antigo e foi feito sem muitas preocupações com as melhores práticas. Eu sofro bastante para dar manutenção, então sei o valor das boas práticas. hahah

Quanto a "ser velho", nunca deixe isso ser um fator determinante. O simples fato de você se interessar por esse conteúdo e fazer perguntas da profundidade dessa aqui já mostra que você está muito a frente de muitos "jovens" no mercado.

Abraços e bons estudos.