1. Usar la arquitectura MVC en aplicaciones web/PHP
El PDF del documento está disponible |AQUÍ|.
Los códigos del documento están disponibles |AQUÍ|.
El modelo MVC (Modelo-Vista-Controlador) busca separar claramente las capas de presentación, procesamiento y acceso a los datos. Una aplicación web que siga este modelo tendrá la siguiente arquitectura:
![]() |
A esta arquitectura se le suele llamar arquitectura de tres capas o de tres niveles:
- la interfaz de usuario es la vista (V)
- la lógica de la aplicación es el controlador (C)
- las fuentes de datos son el modelo (M)
La interfaz de usuario suele ser un navegador web, pero también podría ser una aplicación independiente que, a través de la red, enviara solicitudes HTTP al servicio web y diera formato a los resultados que este le envía. La lógica de la aplicación está compuesta por los scripts que procesan las solicitudes del usuario. La fuente de datos suele ser una base de datos, pero también pueden ser simples archivos planos, un directorio LDAP, un servicio web remoto, etc. Es recomendable que el desarrollador mantenga una gran independencia entre estas tres entidades para que, si una de ellas cambia, las otras dos no tengan que cambiar, o solo lo hagan mínimamente.
La arquitectura MVC se adapta bien a las aplicaciones web escritas con lenguajes orientados a objetos. El lenguaje PHP (4.x) no está orientado a objetos. No obstante, se puede hacer un esfuerzo por estructurar el código y la arquitectura de la aplicación para acercarnos al modelo MVC:
- Se colocará la lógica de negocio de la aplicación en módulos separados de los módulos encargados de controlar el diálogo de solicitud-respuesta. La arquitectura MVC queda así:
![]() |
En el bloque [Logique Applicative], se pueden distinguir:
- el programa principal o controlador, que es la puerta de entrada a la aplicación.
- el bloque [Actions], un conjunto de scripts encargados de ejecutar las acciones solicitadas por el usuario.
- el bloque [Classes métier], que agrupa los módulos PHP necesarios para la lógica de la aplicación. Estos son independientes del cliente. Por ejemplo, la función que permite calcular un impuesto a partir de cierta información que se le proporciona en los parámetros no tiene que preocuparse por la forma en que se obtuvieron dichos datos.
- el bloque [Classes d'accès aux données], que agrupa los módulos PHP que obtienen los datos necesarios para el controlador, a menudo datos persistentes (BD, archivos, etc.)
- los generadores de las vistas que se envían como respuesta al cliente.
En los casos más sencillos, la lógica de la aplicación suele reducirse a dos módulos:
- el módulo [contrôle], que se encarga del diálogo entre el cliente y el servidor: procesamiento de la solicitud, generación de las diversas respuestas
- el módulo [métier], que recibe del módulo [contrôle] los datos que debe procesar y le devuelve los resultados. Este módulo [métier] gestiona entonces por sí mismo el acceso a los datos persistentes.

