Muitas vezes, quando nós vamos desenvolver algum projeto em PHP nos deparamos com o conceito de MVC, em especial quando vamos utilizar alguma framework para auxiliar no desenvolvimento e começam a surgir várias dúvidas

O que é MVC?

MVC é antes de mais nada uma arquitetura que permite dividir o desenvolvimento da aplicação em três camadas conceituais: Model, View e Controller (Modelo - Visão - Controlador).

A model seria a parte da modelagem de dados e regras de negócio. É nela que vão constar as classes , as consultas ao banco de dados e as regras de negócio do sistema.

A view é a parte estética, a interface. É a "tela" onde os dados e os links serão apresentados ao usuário. De grosso modo, um arquivo somente com códigos HTML e CSS (e se tiver, o Javascript também). Aprendendo MVC na prática

O controller seria a parte do controle do sistema. É ele quem faz as ligações das diversas partes do sistema, recebe e valida os dados fornecidos na entrada de dados das views, faz a ligação dos dados com as regras de negócios e as consultas a base de dados dos models, processa a requisição e retorna um resultado, geralmente em uma nova view.

Qual a importância do MVC?

Ao abstrair o desenvolvimento em três camadas conceituais, o MVC permite que o desenvolvimento do projeto fique mais fácil, pois organiza melhor as partes do projeto em pequenos módulos, cada um como uma atribuição específica no sistema.

Qual a origem do MVC?

Surgiu originalmente como MVCU (Model - View - Controller - User), por Trygve Reenskaug em 1979, onde o User surgiu como uma quarta camada, pois Reenskaug acreditava que deveria haver uma camada onde o usuário tivesse autonomia para definir as funcionalidades que ele precisava dentro do sistema. Com o tempo, o conceito de User sumiu, visto que o usuário muitas vezes não conseguia definir, de forma autônoma, as necessidades do sistema e ficou somente MVC.

Qual o futuro do MVC?

Muito se discute sobre DCI, mas esse é apenas uma MVC melhorada. No caso, DCI significa Data - Context - Interaction (Dados - Contexto - Interação). O data tem a mesma função do model, o context do controller e a interaction a da view.

Por meio de uma interaction, o context acessa o data, faz a requisição e retorna outra interaction de acordo com os parâmetros fornecidos na interaction e as regras de negócio fornecidas e consultas a base de dados pelo data. Praticamente a mesma coisa, só mudam alguns termos. O DCI não substitui o MVC, ele é apenas um complemento para solucionar problemas que o MVC possui. O que mais diferencia a DCI da MVC seriam duas ferramentas muito úteis: as traits e a injeção de dependências.

As traits resolvem a parte de problemas de herança que a orientação a objetos no PHP não conseguiu resolver: reaproveitamento de código mediante herança. O trait nada mais é que um método a qual você atribui um pedaço de código e pode atribuir ele a várias partes do código, o que resolveria na prática esse problema. Outra ferramenta é a injeção de dependências. Ele permite o desacoplamento dos módulos dos sistema e um gerenciador que controla as dependências entre as várias partes do sistema.

Porém essas ferramentas só funcionam a partir da versão 5.4 do PHP, fique atento à versão do PHP que roda em tua máquina.

Dica (Independente do Framework a ser Utilizado)

Muitos desenvolvedores concentram os esforços no controller e acabam fazendo um controller pesado e carregado, enquanto os esforços deveriam ser no model, pois a maior parte das coisas que o sistema fará dependem das regras de negócio e do acesso a base de dados.

Links Úteis sobre MVC:
  • O que é MVC?:

    MVC é atualmente o padrão arquitetural mais utilizado no desenvolvimento web, portanto seu conhecimento é fundamental para a construção de projetos bem estruturados.

  • Spring MVC: Construa aplicações responsivas com Bootstrap:

    Desenvolva aplicações responsivas integrando o framework web da Spring com o Bootstrap, uma das bibliotecas de front-end mais conhecidas.

  • ASP.NET MVC:

    Neste Guia de Referência você encontrará o conteúdo que precisa para aprender a desenvolver aplicações web com o framework ASP.NET MVC e a linguagem C#.

Confira também