Resumo MVC
MVC é um padrão de arquitetura de software que separa a informação (e as suas regras de negócio) da interface com a qual o usuário interage.
É uma forma de estruturar seu projeto/aplicação de forma que a interface de interação (view) esteja separada do controle da informação em si (models), separação essa que é intermediada por uma outra camada controladora (controllers).
Não vou entrar em detalhes profundos sobre a arquitetura de um sistema baseado no MVC nem vou – por enquanto! – mostrar como criar um MVC do zero, mas vou tentar explicar cada uma das três camadas e dar exemplos de código do CakePHP, que é um framework de PHP que – ao meu ver – faz um bom uso do MVC.
Model (ou modelo)
O model é a camada que representa os seus dados, provendo meios de acesso (leitura e escrita) à esses dados.
A regra é simples: tudo que diz respeito à escrita, validação e leitura dos dados está dentro da camada model, não necessariamente dentro do model em si, mas dentro da camada model.
Controller (ou controlador)
No controller você tem métodos públicos que são chamados de actions, cada action é responsável por uma “página” do seu site/sistema. É o controller quem decide:
1. Qual model usar;
2. Quais pedidos fazer pro model;
3. Qual combinação de views será usada para exibir os dados retornados pelo model.
Atente que não é o controller que busca os dados (responsabilidade do model) e nem é ele quem exibe os dados (responsabilidade da view)… ele está ali justamente pra controlar os dois e a aplicação como um todo.
View (ou visualização)
É na view que o seu sistema interage com o usuário. Tudo que ele ver (HTML / XML / RSS / CSV) deve ser gerado e exibido através dessa camada. A view, por sua vez, tem como responsabilidade:
Manipular os dados para – e apenas para – exibição;
Exibir os dados
Mas a view não faz nenhum tipo de escrita/persistência no seu sistema… ela não salva dados no banco, na sessão e etc.. E ela também não busca esses dados, pois eles devem –