Skip to content

1. Utilizar a arquitetura MVC em aplicações web/PHP

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

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

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

Esta arquitetura é frequentemente designada por arquitetura de 3 camadas ou de 3 níveis:

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

A interface do utilizador é frequentemente um navegador da Web, mas também pode ser uma aplicação autónoma que, através da rede, enviaria pedidos HTTP ao serviço Web e formataria os resultados que este lhe enviasse. A lógica da aplicação é constituída pelos scripts que processam os pedidos do utilizador. A fonte de dados é frequentemente uma base de dados, mas também pode consistir em simples ficheiros de texto, um diretório LDAP, um serviço web remoto, etc. É do interesse do programador manter uma grande independência entre estas três entidades, para que, caso uma delas mude, as outras duas não tenham de mudar, ou apenas ligeiramente.

A arquitetura MVC está bem adaptada a aplicações web escritas em linguagens orientadas para objetos. A linguagem PHP (4.x) não é orientada para objetos. No entanto, é possível envidar esforços para estruturar o código e a arquitetura da aplicação, de modo a aproximá-la do modelo MVC:

  • Colocaremos a lógica de negócio da aplicação em módulos separados dos módulos responsáveis por controlar o diálogo pedido-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], um conjunto de scripts responsáveis por executar as ações solicitadas pelo utilizador.
  • o bloco [Classes métier], que agrupa os módulos PHP necessários à lógica da aplicação. Estes são independentes do cliente. Por exemplo, a função que permite calcular um imposto a partir de determinadas informações que lhe são fornecidas como parâmetros não precisa de se preocupar com a forma como essas informações foram obtidas.
  • o bloco [Classes d'accès aux données], que agrupa os módulos PHP que obtêm os dados necessários ao controlador, frequentemente dados persistentes (BD, ficheiros, ...)
  • os geradores das vistas enviadas como resposta ao cliente.

Nos casos mais simples, a lógica da aplicação é frequentemente reduzida 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 processar e lhe fornece, em troca, os resultados. Este módulo [métier] gere, então, ele próprio o acesso aos dados persistentes.