You are on page 1of 4

MVC con PHP

De una forma abstracta, pero fácilmente perceptible, una aplicación se divide en dos partes.
una es la parte con la que interactúa el usuario llamada interfaz y la otra es la capa de acceso a
datos.

Como suele pasar con tantas otras cosas - los mismos conceptos pueden tener varios nombres. La
capa de acceso a datos se denomina -Contenido- y la Interfaz es llamada -Capa de Presentación-.
Una manera de llevar esta separación a una arquitectura de aplicaciones es MVC - Modelo Vista
Controlador.
Esta arquitectura va más allá de esa división abstracta en dos capas e implementa 3 partes:

José Antonio Morgado Berruezo 1 Desarrollo de Aplicaciones web 
morgadoberruezo@gmail.com con el Framework Symfony y Ajax
En el esquema de arriba las líneas azules significan una interacción directa y las verdes la indirecta.
Esto básicamente quiere decir que las verdes son las respuestas a las azules.
La capa de Presentación se divide en dos componentes: Controlador y la Vista. La capa de Datos
tiene un componente: el Modelo.
Controlador
✗ Algunos al hablar de Controlador se referirán a su acometido bajo los nombres de
Lógica de Negocio o Lógica Empresarial.
✗ Como su propio nombre indica el Controlador controla lo que sucede a partir de que
se haya producido una interacción por parte del usuario sobre la Vista.
✗ La Vista le comunica los eventos al Controlador. El Controlador usa el Modelo para
conseguir los datos o almacenarlos y por fin, el Controlador vuelve a usar la Vista
para comunicar al usuario que resultado provocó su acción.
Modelo
✗ El acometido de esta parte llamada Modelo es el Acceso A Datos. Al hablar de Datos
uno piensa en una Base de Datos o un Sistema de Gestión de Bases de Datos
(SGBD): MySQL, PostgreSQL, Oracle etc.
✗ En realidad el Modelo encapsula la Capa de Acceso a Datos de tal forma que se
supone que nos podemos olvidar de que tipo de SGBD estamos usando.
El Modelo, en realidad, es el objeto en sí.
✗ Si no te suena el término “objeto” mira Programación Orientada a Objetos (POO).
Vista
✗ La tercera parte es la Vista. Es en realidad la Capa de Presentación. Sirve para que el
usuario pueda interactuar a través de los eventos con el Controlador y también para
que pueda ver los resultados. Estos resultados serán aportados por el Controlador a
través del Modelo. Sí - Modelo también.
✗ Esta es la diferencia con la simple programación por capas (también llamada
escalonada o multi-escalonada) y sin conocerla se suelen confundir los términos.
Mira el gráfico:

José Antonio Morgado Berruezo 2 Desarrollo de Aplicaciones web 
morgadoberruezo@gmail.com con el Framework Symfony y Ajax
En una arquitectura de separación por capas – que es una manera de llevar a cabo la separación
abstracta de 2 capas– la Capa de Acceso a Datos nunca interfiere directamente con la Vista. Lo hace
siempre a través del Controlador. El Controlador interpreta los eventos que le llegan de la Vista, usa
los objetos o funciones de la Capa de Acceso A Datos y envía datos a la Vista. Pero la Vista no
ejecuta los métodos de los objetos. En MVC, sin embargo, la Vista sí puede mostrar datos a través
de los métodos de un objeto que el Controlador le ha pasado.

Traducido al mundo de la programación web paso por paso:


1) el Controlador recibe una petición. Esto puede ocurrir de forma directa poniendo el
usuario en el navegador la url del Controlador http://sitioweb.algo/controlador.php, o
mediante un evento a través de una Vista ya renderizada (envio de un formulario por
ejemplo), o por una petición ajax.
2) el Controlador analiza la petición y usa un Modelo para obtener datos de algún tipo.
3) el Modelo puede leer datos y/o los escribirlos en una base de datos. Normalmente sucede
esto, aunque no siempre.

José Antonio Morgado Berruezo 3 Desarrollo de Aplicaciones web 
morgadoberruezo@gmail.com con el Framework Symfony y Ajax
4) el Controlador usa una Vista para poder presentar los resultados al usuario.
5) la Vista usa el Modelo, de tal forma, que algún tipo de respuesta obtenido por la acción
previa será presentado en la Vista.
6 ) la Vista está renderizada con los datos del Modelo y el Controlador envía esta respuesta
al usuario.
7) El usuario obtiene la respuesta
El Modelo Vista Controlador no es una cosa reciente. Lo inventaron en los años 70 al
empezar a hacer aplicaciones medianamente grandes que manejaban muchos datos. Es el
llamado “Modelo* 2” en la jerga Sun.
*Aquí la palabra Modelo no tiene que ver con el Modelo de Modelo Vista Controlador sino
con el nombre de la arquitectura.
Sinceramente - hacer una aplicación usando la arquitectura MVC te costará más trabajo que si haces
páginas monolíticas, mezclándolo todo - el php y el html en lo que se llama popularmente el código
spaghetti.
El MVC supone más trabajo:
Primero tendrás que definir los Modelos y convertirlos en Objetos de tal manera que sus atributos y
métodos sean el conjunto de propiedades y acciones verdaderamente necesarias y representativas.
Tendrás que planificar las Vistas por separado y trabajar los Controladores. Al principio de la
implementación te será más rápido hacer páginas monolíticas…
¿Por qué usarlo entonces?
Pues, cuando quieras cambiar tu aplicación – para añadir, quitar o cambiar alguna funcionalidad - la
vida te resultará muy dura. Un proyecto medianamente grande se convertirá en un infierno en muy
poco tiempo sobre todo cuando quieras cambiar algo y ello afecte al funcionamiento de más de una
de tus páginas.
El MVC básicamente te permitirá poder cambiar las Capas de presentación sin que afecten a la de
acceso de datos y viceversa.
Hay gente que te dirá que el PHP fue concebido como algo sencillo y práctico. Como un lenguaje
que permite hacer páginas web dinámicas y procesar formularios de una manera simple. Que
complicar las cosas más allá de eso es impropio de este lenguaje.
Y les doy la razón. ¡Claro! El asunto es que ese primer PHP no tenía mucho que ver con el PHP5
actual. No había objetos por ejemplo.
Hay pequeñas diferencias en como implementan el MVC distintos frameworks, pero los
fundamentos son los mismos.
También puedes usar motores de plantillas como por ejemplo Smarty para implementar el MVC,
pero en realidad no necesitas nada más que el PHP puro.

José Antonio Morgado Berruezo 4 Desarrollo de Aplicaciones web 
morgadoberruezo@gmail.com con el Framework Symfony y Ajax

You might also like