Ir para conteúdo

Arquivado

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

horacio2009

padrão mvc

Recommended Posts

Bom dia a todos!!

pessoal estou querendo entender melhor o padrão mvc de desenvolvimento, o view e o controller eu entendi...

o primeiro se refere ao html e o segundo, se refere ao processamento de php, se tem que acontecer condições, switchs, calculos e tal...aqui, perfeito!!!

porém, na questão do modelo, ainda tenho duvidas...

ele apenas cuida da parte de banco de dados????

quer dizer, do ponto de vista de divisão em camadas , até faz sentido, um exibe, outro processa e no caso o modelo consulta...

perfeito...

mas é só essa a função do modelo????

o que mais tem????

obrigado a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

O model como diz o nome é o modelo, ele é responsável pelos seus objetos seja ele para banco de dados ou não.

 

imagine que você esteja cadastrando um usuário na sua DB.

 

você terá uma requisição que vai ser passada pro controller e ele chama os objetos Pessoa e o DAO para interagir com o 2 e depois o retorno é o view.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vinicius Rangel, cuidado fera, palavras erradas e mal explicadas confundem toda interpretação, não que esteja totalmente errado, mas um pouco tanto confuso o que você falou !

 

horacio2009,

Veja bem, você tem um controlador, ele simplesmente controla 'óbvio', ele conhece a Model e a View, no controlador você pode ter um método pra interceptar a requisição e ativar a Model com a View necessária, tipo ?action=login, você pode ter uma condicional pra verificar se a action é login e fazer o processo para logar o usuário.

 

Model é responsável por lidar com dados, inserindo, buscando, deletando ... atualizando e todo resto (relacionado a dados), independente de onde eles estejam, sua implementação relacionada a dados ficará lá.

 

View é o cara que exibe de forma (human-readable), de forma elegante, ela nada mais faz do que receber os dados e formatar a exibição para o cliente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa ver se entendi,Andrey Knupp (falando de uma forma simples, ok?)

View= html

Controle = processamento de dados(if,else, contas, str_replace, etc, etc)

Model= manipulações dentro de banco de dados,crud de maneira geral...

tá certo então, dessa forma???

 

 

Vinicius Rangel, você disse isso de forma mais ampla, no caso, a captação de dados poderia vir de xml, txt, etc,ele pega os dados, o o controle trata, e a view exibe, né?

 

por enquantp, obrigado pela atenção e resposta! e agradeço tbm pelos demais posts respondidos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa ver se entendi,Andrey Knupp (falando de uma forma simples, ok?)

View= html

Controle = processamento de dados(if,else, contas, str_replace, etc, etc)

Model= manipulações dentro de banco de dados,crud de maneira geral...

tá certo então, dessa forma???

 

É cara, nessa parte aí do Controle é meio complexo, alguns dizem que deve fazer na Model outros dizem que deve ser feito no Controller, na verdade, minhas validações ficam na Model, e essa parte de contas também.

 

Sua view está correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Vinicius Rangel, você disse isso de forma mais ampla, no caso, a captação de dados poderia vir de xml, txt, etc,ele pega os dados, o o controle trata, e a view exibe, né?

 

eu nunca fui muito didático então nas minhas explicações eu sou mais direto e falo mais curto e grosso, talvez por isso seja difícil a compreensão as vezes, e pra sua resposta é sim acho que o Trabalho do model é relacionar os seus objetos.

 

de que modo isso é feito?

 

através dos if e outras coisas para saber de que dado ele se trata e a partir disso qual objeto seria o melhor a ser chamado.

 

eu não trabalho com mvc é um padrão que eu não gostei muito talvez até por falta de pesquisa pois quando comecei a ver realmente não vi uma necessidade mais enfim.

 

@Vinicius Rangel, cuidado fera, palavras erradas e mal explicadas confundem toda interpretação, não que esteja totalmente errado, mas um pouco tanto confuso o que você falou !

 

pode deixar que eu vou tentar tomar mais cuidado, como disse tenho dificuldades em ser didático.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu nunca fui muito didático então nas minhas explicações eu sou mais direto e falo mais curto e grosso, talvez por isso seja difícil a compreensão as vezes, e pra sua resposta é sim acho que o Trabalho do model é relacionar os seus objetos.

 

de que modo isso é feito?

através dos if e outras coisas para saber de que dado ele se trata e a partir disso qual objeto seria o melhor a ser chamado.

 

Não entendi a pergunta !

 

pode deixar que eu vou tentar tomar mais cuidado, como disse tenho dificuldades em ser didático.

 

Êpa, não estou dando lição de moral, nem nada, só falei que alguns pontos que você citou ficaram 'estranhos' rsrs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, calma lá... vamos botar em panos limpos...

 

MVC é um padrão de arquitetura proposto na década de 80, por um carinha com um nome meio complicado :rolleyes:. Inicialmente, ele foi desenvolvido para ser utilizado em aplicações desktop. Mais tarde, com o amadurecimento das aplicações web, o conceito de MVC foi adaptado para a mesma.

 

De maneira simples e objetiva:

 

Model

O Model é o "cérebro" da sua aplicação. Nele ficam armazenados o conhecimento (dados) e a lógica de negócio (operações, métodos, que sejam condizentes com a aplicação). Ou seja, o Model não é SÓ banco de dados. Acontece que muitas vezes, aplicações tem por função simplesmente realizar a persistência de dados, o que acaba restringindo o Model a essa função, mas não é só isso o que ele pode fazer.

 

Além de armazenar os dados, o Model deve ser capaz de retorná-los em formatos legíveis para os mecanismos de Views e possivelmente até para outras aplicações externas (como os webservices fornecem). Outra função do Model é realizar a validação dos dados antes de armazená-los. Todos os dados que saem do Model para o banco de dados devem estar devidamente validados e sanitizados para evitar problemas.

 

O Model é talvez a camada mais "independente" da aplicação, ela não deve conhecer Views nem Controllers em nenhum aspecto.

 

 

View

A View é a parte "visual" da aplicação, é a parte da interface que o usuário pode ver. Interfaces podem ser de vários tipos, como GUI, CLI (linha de comando) ou web. A função da View é apresentar a saída de dados da aplicação para o usuário. Tais dados ficam armazenados no Model.

 

Muitas pessoas afirmam que a View deve ser uma camada "burra", praticamente estática, sem consciência da própria existência, uma mera "escrava" da aplicação. Eu discordo desse ponto de vista pelo fato de que a lógica de apresentação (condicionais para exibir ou não um componente, por exemplo) não cabem em nenhum outro lugar, se não na própria View.

 

A View deve ser independente do Model de forma que nenhuma mudança (ou o mínimo possível) será necessária caso o Model altere a sua forma de persistência. Além disso, a View não deve conhecer seu Controller, de forma a evitar o acoplamento. Dessa forma, é possível que vários controllers diferentes se refiram a uma mesma View.

 

Controller

Talvez a parte mais obscura do MVC seja a definição exata do que é o Controller. Muitas vezes, é difícil delimitar onde termina o Controller e onde começa o Model e a View. Em teoria, o Controller é o responsável por capturar as ações do usuário e repassá-las ao Model. Numa aplicação desktop, por exemplo, o callback do clique em um botão é parte do Controller.

 

Agora quando vamos para o universo Web, a coisa fica mais feia. Acontece que boa parte do "trabalho" do Controller é feito pelo navegador, ou seja, o ato de capturar eventos (clique em um link, envio de um formulário) e enviar as requisições HTTP condizentes com aquela ação.

Com o advento das requisições assíncronas (ajax, push, comet, e esses vários nomes), foi possível aproximar as aplicações Web um pouco mais das aplicações Desktop.

 

Mas aí surgiu mais um problema: para controlar elementos HTML, precisamos lançar mão de uma linguagem client-side, como o Javascript. Dessa forma, o Controller se dividiria em 2 partes distintas, uma server-side e outra client-side, o que acaba gerando uma confusão para os mais inexperientes...

 

Resumindo, a função do Controller em ambientes Web é traduzir as ações do usuário em requisições HTTP e depois traduzir a requsição HTTP em operações no servidor. Adiciona-se aí talvez uma pequena parte de validação de dados no que diz respeito SOMENTE a requisições HTTP. Validações do tipo "tamanho do campo, valor único, etc" são de responsabilidade do Model.

 

O Controller é a camada que está mais fortemente acoplada (ainda que devemos tentar reduzir isso ao máximo) aos demais componentes, pois ele é justamente o código que faz a ligação entre o Model e a View.

_____________________________________________________________

 

Os conceitos são mais ou menos esses, aí cabem várias questões de implementação. Se quiser saber sobre as mesmas, me avise que eu tento escrever. Se for escrever tudo neste post, vai ficar imenso e ninguém vai ler.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Andrey

 

primeiro é que todas as lições são bem vindas eu tentei ajudar e caso eu falar besteira pode falar por que eu frequento aqui para ajudar e aprender se eu tiver falando besteira pode dar um "puxão de orelha"

 

a segunda parte não era bem uma pergunta só tentei terminar de explicar e pelo visto falhei miseravelmente.

ahuuhahuahuauhaa

 

acho que você e o Henrique já explicaram então daqui me retiro.

 

abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, pessoal, deixa eu entender então...(até imprimi os posts para estudar!! rsrs)

tenho a pagina index, nela tem uma opção de login, e uma texto principal

o modelo então, deve ter:

uma pesquisa de textos(banco de dados)

processo dde filtragem dos dados de login

processo de verifiicação dos dados de login

 

o controle então, fica encarregado de comunicar ao modelo o que foi pedido na view...

tipo:

clico em login, após digitar meus dados.

o controle chama a o método validacao, se retornar positivo, chama o método de banco que verifica os dados, aí, retorna pro controle por exemplo, 0 ou 1, se for 1, o controle joga para administração...

 

é um exemplo bem "tosco" mesmo...só pra captar a ideia...

concluindo, o controlle chama no modelo o metodo necessário para aquela ação,

como se fosse um intermediário das ações realizadas na view....eu quero fazer fazer uma criptografia de dados, o controle recebe do form o dado e encaminha pro modelo, o modelo encripta, o controle recebe e exibe na view...

bom, n~~ao sou muito didático, ainda mais com conceitos novos, mas acredito que a idéia seja essa, o controle apena como um intermediário das ações pedidas na view e realizadas no model(porque a lógica do sistema está no modelo)...

acertei???

Obrigado a todos pela ajuda até agora, pessoal!!!

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.