O que é MVC?
Muita gente já ouviu falar alguma vez sobre esta metodologia de desenvolvimento. Mas afinal, o que vem a ser uma aplicação desenvolvida em MVC? Neste artigo, irei explicar de uma forma sucinta sobre este tipo de arquitetura de desenvolvimento e como este método pode ser aplicado utilizando a linguagem PHP.
MVC vem da sigla (Model-View-Controller) e é um padrão de arquitetura de software. Em aplicações complexas, que enviam uma série de dados para o usuário, o desenvolvedor frequentemente necessita separar os dados (“Model”) da interface (“View”). Desta forma, alterações feitas na interface não afetarão a manipulação dos dados, e estes poderão ser reorganizados sem alterar a interface do usuário. O model-view-controller resolve este problema através da separação das tarefas de acesso aos dados e lógica do negócio da apresentação e interação com o usuário, introduzindo um componente entre os dois: o Controller. MVC é usado em padrões de projeto de software, mas MVC abrange mais da arquitetura de uma aplicação do que é típico para um padrão de projeto.
A Figura 1 representa um diagrama simples exemplificando a relação entre Model, View e Controller onde linhas sólidas indicam associação direta e as tracejadas indicam associação indireta. É comum dividir a aplicação em camadas separadas: apresentação (“interface”), domínio e acesso a dados. Em MVC a camada de apresentação também é separada da view e da controller.
Figura 1. Representação gráfica do conceito MVC
MVC é muito visto também em aplicações para Web, onde a View é geralmente a página HTML, e o código que gera os dados dinâmicos para dentro do HTML é o Controller. E, por fim, o Model é representado pelo conteúdo de fato, geralmente armazenado em bancos de dados ou arquivos XML.
Usando Objetos para entender o conceito aplicado de MVC
Muita gente me pergunta sobre a maneira que eu programo usando MVC com PHP. É claro que já existem vários frameworks que utilizam essa técnica no desenvolvimento PHP. Porém resolvi apresentar aqui o conceito do que uso que pode servir de material de auxílio para outros programadores também.
Para se ter uma idéia, vamos partir para o modelo de programação orientada a objetos. A maneira mais prática de se programar usando MVC nada mais é do que programar usando orientação a objetos. Vamos pensar então no conceito de objeto. Um exemplo, um veículo, onde teremos a classe de veículo e seus métodos (Listagem 1).
Listagem 1. Exemplo de classe em PHP
class Veiculo{
/* Qualquer veículo tem os seus métodos padrões: */
public function andar(){
/* Programação da função */
}
public function parar(){
/* Programação da função */
}
}
?>
Agora digamos que temos vários veículos, tais como: carros, motos, bicicletas e cada um terá eventos diferentes um do outro. Para isso criamos novas classes estendendo a classe Veiculo no qual as novas classes irão herdar os métodos e propriedades da classe Veiculo, como podemos ver a seguir na Listagem 2.
Desta forma quando instanciarmos o objeto Bicicleta, podemos utilizar os métodos de Veiculo, pois Bicicleta é uma extensão de Veiculo, como no código seguinte:
$meuVeiculo = new Bicicleta();
$meuVeiculo->trocarMarcha();
$meuVeiculo->andar();
$meuVeiculo->parar();
?>
Agora vamos construir outra classe Automovel que instancia Veiculo (Listagem 3). Desta forma quando instanciarmos o objeto Automovel, podemos utilizar os métodos de Veiculo, pois Automovel é uma extensão de Veiculo, como podemos na Listagem 4.
Listagem 2. Classe veículo estendida
class Bicicleta extends Veiculo{
/* A bicicleta por sua vez contem propriedades */
public $rodas;
/* E tbm tem um metodo construtor */
public function __construct(){
...