leitura de
Encontrou um problema no conteúdo? Por favor, deixe seu comentário!

Model–view–controller (MVC) is a software architecture pattern that separates the representation of information from the user’s interaction with it.
– Wikipedia

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 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.

Vemos aqui um exemplo de model de produtos (que vai prover o acesso à tabela products, no banco de dados) no arquivo Product.php:

Aqui temos um model bem simples, onde definimos as regras de validação e um método que vai auxiliar a encontrar os produtos mais recentes.

Não vou entrar nos detalhes do CakePHP, além do mais acho que o código é bem auto-explicativo.

Somente através desse model será possível cadastrar e buscar produtos, e quando um usuário for cadastrar ou editar uma notícia, aquelas regras de validação devem ser respeitadas, ou seja:

  • O título não pode ser vazio
  • A descrição não pode ser vazia nem ter menos de 100 caracteres
  • O preço precisa ser no formato decimal, com 2 casas decimais

Para saber mais sobre models no CakePHP, consulte a documentação: http://book.cakephp.org/2.0/en/models.html

Agora podemos partir para a camada que vai fazer uso desse model, pedindo uma lista de produtos..

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.

Vamos à um exemplo de controller no arquivo ProductsController.php:

Aqui temos duas actons:

  • Uma action (index) vai pedir (para o model) a lista de produtos mais recentes;
  • Outra action (view) vai pedir (para o model) os dados de um único produto.

Para saber mais sobre controllers no CakePHP, consulte a documentação: http://book.cakephp.org/2.0/en/controllers.html

Agora podemos exibir esses dados na camada responsável por isso…

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 - obrigatoriamente - serem entregues pela camada controller.

Vamos ver então um exemplo de listagem dos produtos, no arquivo index.ctp:

Aqui temos uma mistura de HTML e PHP, e também fazemos uso do NumberHelper, um Helper do CakePHP para ajudar na formatação de números.

Se você quiser saber mais sobre views no CakePHP, consulte a documentação: http://book.cakephp.org/2.0/en/views.html

Conclusão

Com o MVC você conseguirá organizar seu projeto de forma que tudo tenha seu lugar, e cada camada com sua responsabilidade, permitindo um trabalho muitos mais “centrado” e modularizado.

Espero que você tenha gostado dessa breve explicação sobre o MVC, e que ela tenha despertado a fagulha de curiosidade/interesse que vai fazer você correr atrás de mais conteúdo sobre o assunto… Te garanto que isso é só a ponta do iceberg.

Momento jabá!

Gostou dos exemplos e quer aprender um pouco mais sobre CakePHP? E se eu te disser que tenho um curso que é online e ao vivo, e você aprende sem sair de casa?

Gostou? Então inscreva-se na próxima turma e aprenda a assar sites como um cozinheiro de primeira: Assando Sites, curso online de CakePHP

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo