LazyPHP

O que é Model View Controller (MVC)?

Voltar para a documentação do LazyPHP

Conceitos de MVC

ATENÇÃO! As informações abaixo ainda não ensinam como programar com o LazyPHP.

Arquitetura MVC

Model-View-Controller (MVC) é um padão de arquitetura de software, ou seja, representa como você irá organizar e distribuir seu código no desenvolvimento de um sistema. É um pdarão de baixo acoplamento que é utilizado na grande maioria dos sistemas devido a sua popularidade.

Na prática, programar MVC em PHP quer dizer que você não irá criar uma página com extensão .php e colocar tudo lá. Programando MVC, você irá dividir seu código em arquivos distintos que tem a ver com sua representação ou funcionalidade. Resumindo, você irá dividir sua página (aplicação) em camadas. Por quê?

Considere que voce quer fazer uma página em PHP de cadastro para um sistema sem usar MVC ou outro padrão de arquitetura de software. Esta página com extenão '.php' conterá seu layout (HTML, css e javascript), seu formulário HTML, ações PHP de captura e manipulação de dados de formulário, conexão com banco de dados, consultas SQL... ou seja, uma bagunça total.

Acho que todo programador iniciante já fez algo assim. Imagine ter que mudar o layout depois, acrescentar um atributo no banco, mudar a senha de conexão. É o retrato do inferno para o programador manter um sistema assim.

MVC é fácil e flexível, é só uma questão de organização. O MVC utilizado no LazyPHP é uma adaptação do modelo original descrito em 1979 e não segue necessariamente todas suas especificações. Veja abaixo para o que serve cada uma destas camadas:

Model

O Model (modelo) representa a lógica do negócio de sua aplicação. É a parte mais importante do seu sistema, ou seja, a tradução das informações do mundo real para dados. Assim, o model representa os dados, as regras e a forma de relacionamento com outros dados.

A implementação dos models é feita através de classes que representam os dados (concretos ou abstratos) de sua aplicação.

Considere que você está projetando um sistema para biblioteca.

Provavelmente você irá criar uma classe para representar o usuário, uma classe para o livro, outra para definir a locação de um livro por um usuário, etc... Cada classe contem atributos relevantes que descrevem as informações do mundo real. Estas classes são os modelos.

ilustração dos modelos

Os models geralmente representam os dados persistentes, ou seja, a informação contida em uma base de dados.

Habitualmente, cada tabela do seu banco pode ser representada por um classe (model), onde os campos da tabela são implementados como atributos da classe.

Controller

O controlador (controller) é o maestro do sistema. Ele é o responsável por receber as requisições GET ou POST, criar novas instâncias de models, buscar coleções de models e implementar outras ações do sistema.

Em uma aplicação web, quando um usuário quer acessar uma determinada página, a requisição é feita para uma função de um determinado controller. A partir daí esta função do controller irá buscar os dados persistentes (caso necessário) através dos models e também selecionará uma view para finalmente exibir estes dados.

Na prática, um controller é implementado através de uma classe que pode representar um módulo do seu sistema. Cada página deste módulo (cadastro, edição, listar) são implementados como métodos desta classe.

View

A view (visão) é literalmente aquilo que o usuário vê. Em um sistema web, é a própria interface, ou seja, o HTML e CSS.

O objetivo é simples: separar a interface da lógica. Isto quer dizer que a view pode prover a tela necessária para exibir os dados recebidos dos modelos.

Como dito logo acima, quem escolhe a view correta é o controller.

Ciclo de uma requisição MVC

Vamos considerar o seguinte exemplo: O cadastro de um novo cliente de uma aplicação web MVC.

  1. O usuário que está acessando solicita a página através de uma URL.
  2. Através da URL, o frontcontroller determina qual controller deve ser instanciado e qual método deste controller invocado.
  3. Este método do controller irá solicitar a view que contem o formulário HTML para nosso usuário preencher.
  4. Após o preenchimento do formulário, o usuário irá submetê-lo via POST.
  5. Um método do controller será acionado para receber estas informações POST enviadas e verificar se elas são válidas. O controller então criará uma nova instância do model que representa o cliente e solicitará que a informação se torne persistente (salve no banco de dados). Se tudo ocorreu normalmente, então o controller solicitará uma view que informe o usuário que o cadastro foi completado com sucesso.

ciclo MVC

Autor:
Miguel

Voltar para a documentação do LazyPHP

Discussão

Você precisa estar logado para postar um comentário