Entendendo Model-View-Control (MVC)

Author: Ricardo Soares - Postado em: 10/05/2007
Relacionado as categorias: Diversos | 7 Comments 





Resenha:
Outro dia comentei com um amigo que eu não entendia tão bem o conceito de MVC, então trocando alguns e-mails ele pacientemente me elucidou algumas questões. Sou muito grato à ele pela ajuda. Este meu amigo é desenvolvedor PHP na cidade de Brasilia conhecido no mundo técnico como augustowebd. Eu o conheci no PHPConference 2006 e aproveito para postar parte de nossas conversas que me levaram a compreender o tal modelo.

Dissertação:

Ricardo escreveu:
> Não sei se posso falar que sim, mas aquela sua explicação já me
> adiantou, e muito, o conhecimento! Um exemplo é que temos uma classe de
> banco de dados aqui na empresa, quando ela não consegue comunicação com
> o banco de dados ela gera um erro, este erro é construído na classe,
> afinal ela é quem sabe o que é o erro e deve explicar o mesmo. Porem
> hoje ainda é ela quem envia um email para o responsável ou apresenta o
> erro na tela. A diferença é que este erro deve ser gerado pela classe de
> banco e tratado (env por email ou apresent na tela) pela classe de
> visualização. Foi isto que entendi da conversa, se for isto então posso
> dizer que sei MVC :) Eu não conseguia compreender MVC pois ficava
> pensando que o erro deveria ser gerado na classe de banco e a mensagem
> de descrição do erro construída pela classe de visualização, ai ficava
> pensando “a classe de visualização vai ficar gigante!” Um problema que
> ainda penso sobre MVC é que caso eu queira deixar que a classe de
> visualização seja a responsável pela formatação da mensagem esta vai
> exigir um certo nível de padronização das mensagens, o que em certos
> momentos não é algo tão bom assim, mas seriam em casos muito esporádicos.augustowebd escreveu:
> em meu humilde entendimento falta pouco pra vc padronizar esse processo.
>
> 1- vc precisa de uma camada de banco( Dao ),
> http://www.phppatterns.com/docs/design/data_access_object_pattern_more_widgets?s=dao,
>
> que vai fazer o contato direto com o banco, ele e somente ele chega
> ateh o banco.
> entao Augusto, como faco pra enviar os comandos para o banco?
> R: teresmo entao ae a figurada do Contralador, funciona assim,
> hipoteticamente usaremos o login como exemplo.
>
> Login.php (vo) não tem acao nenhum, apenas armazena os dados de login:
> id, login, senha, statusAtivo, deveTrocarSenha, etc…
>
> LoginController.php – geralmente, tem apenas um metodo construtor.
> LoginAutenticaController.php – eh uma especializacao do login, este
> soh sabe pedir para o model enviar um pedido de login para o banco,
> geralmente soh tem o construtor tbm.
>
> LoginModel.php – este fica a regra de negocio. ela eh quem manda o Dao
> incluir alterar, pesquisar, etc., na tabela de Login, somente nela!
> entao o controller solicita um novo login, o model vai no Dao e fala
> inserir.
>
> LoginView.php – Após o controlador ter solicitado ao Model alguma acao
> o Model retorna o resultado desta acao para o controlador e
> controlador, baseado no resposta do Model( geralmente: true or false )
> vai escolher o tipo de view adequado para mostrar para o usuário.
>
> Mas Augusto e em caso de erro mesmo, como fica?
> R: ae vc lança uma excessao e tratando esta excessao vc chama um outro
> objeto: Notificador, por exemplo, que soh sabe enviar notificacoes.
>
> analisa o processo e veja como vai ficando cada um em sua tarefa.
>
> kra da uma navegada com bastante carinho neste site, que tem muita,
> mas muita coisa boa:
> http://www.phppatterns.com/docs/design/archive/model_view_controller_pattern
>

Da conversa vale ainda adicionar alguns links como …
http://en.wikipedia.org/wiki/Architectural_pattern_%28computer_science%29
http://en.wikipedia.org/wiki/Model-view-controller
http://en.wikipedia.org/wiki/Talk:Model-view-controller













Comments

7 Responses to “Entendendo Model-View-Control (MVC)”

  1. anaokulu on August 28th, 2009 2:04 am

    very nice great article thanks

  2. halı yıkama on August 28th, 2009 6:20 am

    very nice great article thanks

  3. hali yikama on August 28th, 2009 7:02 am

    thank you for share

  4. cam balkon on August 28th, 2009 7:22 am

    perfect thank you

  5. promosyon on August 28th, 2009 7:41 am

    thank you for share

  6. Jorge (explica) on March 6th, 2010 5:16 am

    i don’t understand :S but I go to the links that you post there xD
    Thanks for you share :D

  7. blood pressure chart on July 22nd, 2012 2:59 pm

    Great article.

Leave a Reply






Últimos posts