estudando MVC

PerguntasCategoria: MVCestudando MVC

Pessoal, estou estudando MVC e fiquei com uma dúvida a respeito da camada controller. Por exemplo, em um artigo que vi, dizia que a camada model não deve mostrar textos para o usuário, pois o mesmo seria mostrado pela camada view, através da camada controller. Então decidi ver se entendia usando classes que já tinha criado:

Model <-> Controller <-> View (modelo MVC)
Connection <-> ??? <-> HTML, JS, Etc.

O problema é que não sei que classe serviria como uma camada controller, visto que uso a classe que faz conexão com o db mostrar uma mensagem de erro com echo e não tenho classes de View.

4 Respostas
Melhor resposta

Você precisa separar a informação dessa sua classe. Primeiro, você deve configurar os dados da sua conexão do bd na config da sua API.

Depois, cria o model para a sua tabela do banco.

Com o model criado, você já pode criar um controller, pegar as informações do seu model e através do próprio controller chama a view com o HTML. Lembrando que dá pra passar conteúdo do controller pra view.

Você aprende a desenvolver um pequeno fw MVC do 0, oque vai ser suficiente para você entender como funciona as coisas por baixo do capô de frameworks famosos

Na teoria cria métodos na classe model que recebe parâmetros do controle, realiza o acesso ao banco e retorna esse dados para o controller, que por sua vez processa esses dados, e envia para a view, que apenas imprime os dados dentre do htmls com echo. No caso do seu erro, vc teria que retorna-lo do model para o controller, para depous imprmi-lo na tela. Foi isso que entendi da sua dúvida.

Se você quer fazer tudo bonitinho, separando por camadas e tal, começa a entender que o MVC é uma camada só, não existe camada de controller, camada de model e camada de views, o MVC por si só já é a camada de presentation/UI. e dentro dele você tem 3 “atores” que são os controllers que recebem e processam as requisições, os models que servem de base para receber dados no controller e do controller para as views e as views que são propriamente a apresentação, com uma engine de template para receber os dados do model e transforma-los em informação.

No caso, se você quer segui a risca o SOLID, separar tudo por camada e tal, seu controller jamais deveria se comunicar com o BD (ou com qualquer outra fonte de dados, seja um WS, API, ou whatever). Neste caso você precisaria ter uma camada de dados (a DAL – data access layer) que faria isso e nela teria as DTO (data transport object que é considerado por muitos um anti pattern) que seriam responsáveis por representar as entidades do banco/api/ws e saírem da DAL para presentation (MVC) ou então ainda ter a business entre a UI e a DAL, que teriam todas as regras de negócio