Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el modelo es el Sistema de Gestión de Base de Datos y el controlador representa la Lógica de la aplicación.
Mi experiencia con este modelo empezó hace 3 años mas menos, en un proyecto donde se requería un cambio estructural coordinado y de veloz desarrollo. Este modelo en si es lento (construcción) ya que solo para desplegar el famoso
"Hola Mundo" se requiere de un
controlador y una
vista, pero lo importante es que al utilizar este modelo uno puede desarrollar aplicaciones
robustas y
escalables.
Existe una infinidad de frameworks
MVC para
PHP, los mas ocupados por la comunidad son:
Particularmente no ocupe ninguno de estos frameworks, ya que en ese entonces buscábamos uno que ya estuviera testeado y no en fase beta. Se escogió para el desarrollo del proyecto (y con el cual tengo mas experiencia) el framework
Phrame, que lamentablemente no tendrá mas mantenciones, ya que el
"Team PHP" dejará de dar soporte para
PHP4.
Pero en sí, independiente del framework que uno elija, el modelo
MVC es el mismo, puede que cambie la forma de crear las instancias de cada capa, o la forma de incorporar plantillas (templates) pero siempre mantendrá el mismo esquema de
Modelo - Vista - Controlador.
Veamos con detenimiento la funcionalidad de cada capa

La imagen muestra las 3 capas fundamentales del modelo
MVC. Primero se detona un
controlador el cual puede o no invocar a un
modelo o a una
vista o viceversa.
Un ejemplo sería; Un usuario envía datos por un formulario, esta acción detona al
controlador "ingresar_datos" posteriormente el
controlador deriva estos datos (enviados por el formulario) al
modelo "guardar_datos", luego el
controlador llama a una
vista la cual se encarga de mostrar un mensaje al usuario advirtiendo que los datos enviados fueron registrados.
Esta combinación puede variar en otros casos, un controlador puede llamar a un modelo y este a su vez a una vista o un controlador llama a una vista y este al modelo, personalmente sugiero que el controlador llame aun modelo, este modelo retorne algo, y que después el mismo controlador llame a una vista mostrando lo que devolvió el modelo.
- Controlador: Este responde a eventos, usualmente acciones del usuario (agregar, modificar, eliminar, etc.) e invoca cambios en el modelo y probablemente en la vista.
- Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos, en otras palabras es el modelo de negocios del sistema. También es en esta capa donde:
- La aplicación se conecta con la(s) base(s) de datos
- Ejecuta operaciones lógicas
- transacciones entre archivos
- Vista: Esta capa presenta el modelo (datos) en un formato adecuado para interactuar, mas bien conocida como la capa de presentación o la interfaz del usuario.