Skip to content

1. Utilização da arquitetura MVC em aplicações web/PHP

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

O código do documento está disponível |AQUI|.

O padrão MVC (Model-View-Controller) visa separar claramente as camadas de apresentação, processamento e acesso aos dados. Uma aplicação web que siga este padrão terá a seguinte estrutura:

Essa arquitetura é frequentemente chamada de arquitetura de 3 camadas ou 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 web, mas também pode ser uma aplicação autónoma que envia pedidos HTTP para o serviço web através da rede e formata os resultados que recebe. A lógica da aplicação consiste em scripts que processam os pedidos do utilizador. A fonte de dados é frequentemente uma base de dados, mas também pode ser simples ficheiros planos, um diretório LDAP, um serviço web remoto, etc. É do interesse do programador manter um elevado grau de independência entre estas três entidades, de modo a que, se uma delas mudar, as outras duas não tenham de mudar, ou apenas minimamente.

A arquitetura MVC é adequada para aplicações web escritas em linguagens orientadas a objetos. A linguagem PHP (4.x) não é orientada a objetos. No entanto, é possível envidar esforços para estruturar o código e a arquitetura da aplicação de forma a alinhá-los mais estreitamente com o modelo MVC:

  • Colocaremos a lógica de negócio da aplicação em módulos separados daqueles responsáveis por gerir o diálogo pedido-resposta. A arquitetura MVC fica assim:

Dentro do bloco [Lógica da Aplicação], podemos distinguir:

  • o programa principal ou controlador, que funciona como ponto de entrada da aplicação.
  • o bloco [Ações], um conjunto de scripts responsáveis pela execução das ações solicitadas pelo utilizador.
  • o bloco [Classes de Negócio], que agrupa os módulos PHP necessários para a lógica da aplicação. Estes são independentes do cliente. Por exemplo, a função que calcula um imposto com base em determinadas informações fornecidas como parâmetros não precisa de se preocupar com a forma como essas informações foram obtidas.
  • o bloco [Data Access Classes], que contém os módulos PHP que recuperam os dados necessários ao controlador, frequentemente dados persistentes (bases de dados, ficheiros, etc.)
  • os geradores de visualizações que enviam visualizações como resposta ao cliente.

Nos casos mais simples, a lógica da aplicação é frequentemente reduzida a dois módulos:

  • o módulo [controle] que lida com a comunicação cliente-servidor: processando a solicitação, gerando várias respostas
  • o módulo [lógica de negócio], que recebe os dados a serem processados do módulo [controlador] e fornece-lhe os resultados em troca. Este módulo [lógica de negócio] gere então o acesso aos dados persistentes.