Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mexicanox

Montar MVC

Recommended Posts

beleza pessoal !!!!!!!!!

 

seguinte, eu estou começando a me aventurar no MVC, so que to meio perdido para começar, uma coisa que eu to tendoo dificuldade é saber onde vai o que. Eu vou dar um exemplo simples que depois eu começo a embalar e endere melhor.

 

Resumo:

Uma pagina com um formulario de cadastro que vai para o BD.

 

Agora usando MVC para fazer isso ficaria como? o que eu penso é mais ou menos isso.

 

Eu vou precisar de uma arquivo Modelo.php (é onde vai ficar a conexao com o banco de dados, fazer o insert etc..)

 

Controle.php (aqui eu ja me perco, nao sei exatamente o que vai no Controle)

 

em muitos lugares dao exemplos de um arquivo view.php que vai formar o html que o usuario ve, ai eu tenho uma duvida, a propria pagina do formulario ja seria uma view ? ou eu teria que fazer uma classe que mostre o formulario?

 

Por enquanto é isso.

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

@mexicanox,

 

Uma pagina com um formulario de cadastro que vai para o BD.

 

Agora usando MVC para fazer isso ficaria como? o que eu penso é mais ou menos isso.

 

Vamos focar então apenas no seu formulário de cadastro:

 

1. O usuário já está na tela do formulário.

 

O formulário em si já é uma View específica.

 

2. O usuário envia o formulário.

 

Quando o formulário é enviado, ele deverá ser validado para garantir que tudo está certo.

 

Se tudo estiver certo o Controller irá acionar a Model para gravar os dados no banco, se não ocorrer nenhuma falha o Controller irá acionar uma View para avisar o usuário que tudo ocorreu bem e que seus dados foram gravados.

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Se, na hora de gravar os dados, alguma coisa der errado, o Controller irá acionar uma View para avisar o usuário do erro ocorrido.

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Se, ao enviar os dados, alguma coisa estiver errada, os dados não forem válidos ou faltarem alguma informação o Controller nem aciona a Model, ao contrário, acionará diretamente a View para avisar que os dados não são válidos ou que alguma informação está faltando.

 

Resumindo,

 

1. Usuário faz uma requisição

2. O Controller recebe a requisição e decide se vai precisar de uma Model para recuperar ou gravar os dados de/em algum lugar ou se vai apenas apresentar uma View.

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Controller apenas intercepta as requisições e toma as decisões sobre qual View ou Model devem ser acionadas.

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Model apenas trata com os dados solicitados, criando, lendo, atualizando ou excluindo (CRUD) esses dados de algum lugar (não necessariamente de um banco de dados).

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif View pode ser uma página simples de erro ou um Composite com as várias informações vindas da Model.

 

O usuário nunca acessa uma View ou uma Model diretamente, ele deve sempre conversar com um Controller pois é o Controller que toma as decisões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, agora mais algumas duvidas.

 

A validação do formulario é feita no controller ?

 

Na pratica como ficaria mais ou menos as classes, so para eu ter uma ideia do que deve ter em cada uma. Pode ser so a assinatura do metodo e o que ele deve fazer.

 

Uma outra coisa que eu to enrolado é assim, em qual arquivo eu instancio qual classe? Eu prefira deixar a classe separada do resto, entao se eu tiver um arquivo controller.php onde eu devo cria a instancia dessa classe?

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

A validação do formulario é feita no controller ?

 

Sim, uma aplicação pode ter 1 ou N Controllers, cada Controller específico para uma parte específica da aplicação (Application Controller).

 

Para evitar que você tenha que apontar sua View diretamente para um controlador específico, você pode utilizar um Front Controller que receberá todas as requisições, independente de onde elas estão vindo e esse Front Controller irá chamar o Application Controller que tratará sua requisição.

 

Na pratica como ficaria mais ou menos as classes, so para eu ter uma ideia do que deve ter em cada uma. Pode ser so a assinatura do metodo e o que ele deve fazer.

 

Na prática, depende da forma que você está estruturando sua aplicação, mas você pode utilizar padrões de projeto diferentes:

 

No Controller, você pode utilizar Chain Of Responsibility, dessa forma, você passará a requisição sem se preocupar em quem irá tratá-la, mas tendo a certeza que ela será tratada.

Como a View é composta por vários elementos que formam a interface de usuário, você pode utilizar Composite para montar a exibição e Mediator para controlar o relacionamento dos elementos visuais.

Na Model, você pode utilizar Factory para a criação dos objetos de acesso a dados com Registry para organizar as instâncias de banco de dados, Active Record para abstrair a DSL específica do seu SGDB.

 

Uma outra coisa que eu to enrolado é assim, em qual arquivo eu instancio qual classe? Eu prefira deixar a classe separada do resto, entao se eu tiver um arquivo controller.php onde eu devo cria a instancia dessa classe?

 

Tudo depende da forma que você está modelando sua aplicação, algumas vezes o ato de criar um objeto pode ter um custo muito alto, nesses casos você pode utilizar Proxy para adiar ao máximo a criação do objeto verdadeiro.

 

Quando seu Application Controller receber a requisição e assumir a responsabilidade de tratá-la ele poderá criar uma instância da View e uma instância da Model, se a requisição precisar de dados ele pegará esses dados da Model e passará para a View e mandará a View exibir o conteúdo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

to vendo que eu preciso estudar um pouco mais pra conseguir montar alguma coisa decente, vou continuar estudando mais sobre mvc e logo logo eu volto pra perguntar mais alguma coisa :D :D

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.