Skip to content

1. Utilizar a arquitetura MVC em aplicativos web/PHP

O PDF do documento está disponível |AQUI|.

Os códigos do documento estão disponíveis |AQUI|.

O modelo MVC (Modelo-Visão-Controlador) visa separar claramente as camadas de apresentação, processamento e acesso aos dados. Uma aplicação web que siga esse modelo será arquitetada da seguinte forma:

Essa arquitetura é frequentemente chamada de arquitetura de três camadas ou de três níveis:

  • a interface do usuário é a vista (V)
  • a lógica de aplicação é o controlador (C)
  • as fontes de dados são o modelo (M)

A interface do usuário costuma ser um navegador da web, mas também pode ser um aplicativo independente que, por meio da rede, enviaria solicitações HTTP ao serviço web e formataria os resultados que este lhe enviasse. A lógica de aplicação é constituída por scripts que processam as solicitações do usuário. A fonte de dados costuma ser um banco de dados, mas também pode ser simples arquivos de texto, um diretório LDAP, um serviço web remoto, etc. É recomendável que o desenvolvedor mantenha uma grande independência entre essas três entidades, de modo que, se uma delas mudar, as outras duas não precisem mudar, ou apenas minimamente.

A arquitetura MVC é bem adequada para aplicativos web escritos em linguagens orientadas a objetos. A linguagem PHP (4.x) não é orientada a objetos. No entanto, é possível fazer um esforço para estruturar o código e a arquitetura da aplicação, a fim de se aproximar do modelo MVC:

  • Colocaremos a lógica de negócios da aplicação em módulos separados dos módulos responsáveis por controlar o diálogo de solicitação-resposta. A arquitetura MVC passa a ser a seguinte:

No bloco [Logique Applicative], é possível distinguir:

  • o programa principal ou controlador, que é a porta de entrada da aplicação.
  • o bloco [Actions], conjunto de scripts responsáveis por executar as ações solicitadas pelo usuário.
  • o bloco [Classes métier], que reúne os módulos PHP necessários para a lógica da aplicação. Eles são independentes do cliente. Por exemplo, a função que permite calcular um imposto a partir de determinadas informações fornecidas como parâmetros não precisa se preocupar com a forma como essas informações foram obtidas.
  • o bloco [Classes d'accès aux données], que reúne os módulos PHP que obtêm os dados necessários para o controlador, geralmente dados persistentes (BD, arquivos, etc.)
  • os geradores das visualizações enviadas como resposta ao cliente.

Nos casos mais simples, a lógica de aplicação costuma se resumir a dois módulos:

  • o módulo [contrôle], responsável pelo diálogo cliente-servidor: processamento da solicitação, geração das diversas respostas
  • o módulo [métier], que recebe do módulo [contrôle] os dados a serem processados e, em troca, fornece a ele os resultados. Esse módulo [métier] gerencia, então, por conta própria, o acesso aos dados persistentes.