Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Isso ta pra me deixar doido. Quem se comunica com a view ??? O controller ou o model ??? Em alguns sites eu vejo que é o model, em outros eu vejo que é o controller...
A model não tem conhecimento de ninguém.
O controller conhece a model e a view.
A view conhece o model.
* Porém é muito comum aplicar uma camada para encapsular a view.
Está longe de ser necessário e/ou uma boa prática ficar preso em 3-tiers, faça o que for melhor para a organização de sua aplicação.
>
A model não tem conhecimento de ninguém.
O controller conhece a model e a view.
A view conhece o model.
Essa é só uma das formas possíveis, existem outra. Essa é a forma mais popular e costuma dar mais certo com aplicações web.
Antes de mais nada, você precisa planejar o fluxo das requisições, ou seja, o caminho que uma requisição irá tomar até que seja atendida e uma resposta a ela seja fornecida.
Isso pode variar bastante, em frameworks mais complexos, pode ser algo como
Browser -> Bootstrap -> FrontController -> Dispatcher -> ActionController/RestController -> Helpers -> Model -> View -> Renderer/Template Engine
Em um caso mais simples, pode ser assim:
Outra forma é substituir o passo 3 por outros 2 passos:
-
Todas as abordagens existentes têm suas vantagens e desvantagens. O melhor jeito de descobrir qual se encaixa melhor a você é testando...
Atualmente, estou estudando bastante o framework laravel, mas não quero deixar de densenvolver meu cms na unha pois fazendo isso eu aprendo muita coisa ! Toda tecnologia nova eu testo e adiciono nele, e nesse processo eu aprendo muita coisa ! E como eu aprofundei meus estudos em padrões de desenvolvimento(MVC, design patterns, etc) eu gostaria de entender 100% a estruturação MVC para poder implementá-la em meu cms apenas com o intuito de estudo.
Rapaz, agora que eu consegui entender isso !
O controller é quem vai comandar o que será feito a partir de uma determinada solicitação do cliente. Tendo essa solicitação, ele vai enviar pro model e o model vai atualizar a view.
>
Em um caso mais simples, pode ser assim:
Outra forma é substituir o passo 3 por outros 2 passos:
-
Todas as abordagens existentes têm suas vantagens e desvantagens. O melhor jeito de descobrir qual se encaixa melhor a você é testando...
Você me deu 2 exemplos de uma possível implementação de MVC em uma aplicação. Gostaria de saber se eu posso instanciar a classe model nas views e o controller ia servir apenas para pegar as requisições feitas pelo usuário e passar para o model para que o model atualize as views.
Poder você pode, nada te impede...
Eu NUNCA VI dessa forma, normalmente, é como eu falei: controller instancia view e model, depois passa objetos model para view, mas se você tem uma boa justificativa para fazer dessa maneira, faça.
Eu sempre falo isso e nunca vou cansar de repetir: design pattern não é receita de bolo.
Henrique, tenho apenas mais uma dúvida. É para eu instanciar a view e o model dentro de um método da classe controller ?
Bom dia,
Veja se este artigo ajuda a esclarecer - http://phpmaster.com/the-mvc-pattern-and-php-1