| Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar] |
|
WWW \ MVC en tres pasos, en PHP y sin objetos Este artículo ha sido consultado en 654 ocasiones. MVC en tres pasos, en PHP y sin objetos (y nada más)MVC significa "Modelo, Vista y Controlador". A grandes rasgos: el Modelo es todo acceso a base de datos, y las funciones que llevan lo que llaman "lógica de negocio". O sea, las funciones más "pequeñas" con significado: ingresar una cantidad, obtener un listado de historias, ... La vista, en una aplicación web, es el HTML (o XML, WAP, PDF, ...) y lo necesario para convertir datos en HTML. El acceso a bases de datos no es vista. La gestión de sesiones no es vista. El controlador es lo que une la vista y el modelo. Por ejemplo, son las funciones que toman los valores de un formulario, consultan la base de datos (a través del modelo) y producen valores, que la vista tomará y convertirá en HTML. 1. M de ModeloLas funciones "con significado" que mencioné antes deberían estar agrupadas lógicamente. O sea, no de una "forma lógica", sino que las que sean parecidas estén juntas. El modelo incluye todas las funciones necesarias para acceder a bases de datos, recursos de la máquina, etc. Estas funciones son de acceso a base de datos. Son funciones muy simples, que por si solas no tienen "significado" fuera de la base de datos:
Estas funciones tienen "significado": son operaciones "reales" sobre cosas "reales":
La principal diferencia es que las primeras son simples operaciones sobre la base de datos, y que las segundas pueden componerse de una o varias llamadas a funciones de acceso a base de datos y, posiblemente, cierta cantidad de "procesamiento". Ejemplo:
RazonesCada acceso a base de datos se pone en su función individual porque, de esta forma, si se cambia de gestor de bases de datos este cambio sólo afecta a estas funciones, no al resto de la aplicación. Tener el modelo bien delimitado permite la existencia de varias aplicaciones que compartan el mismo modelo (por ejemplo, una aplicación "tienda" y una "contabilidad" que accedan a las bases de datos de inventario, ventas, ...) 2. C de ControladorEl controlador no accede (directamente) a la base de datos, ni genera (directamente) HTML; se limita a obtener valores, procesarlos y obtener otros valores (además de la gestión de sesiones, cookies, logs y ese tipo de tonterías). Lo típico es recoger los valores de un formulario, procesarlos, trabajar un poco con la base de datos, procesar algo más, y almacenar el resultado en una o varias variables:
letranovalida.php y listadoproductos.php son parte de la vista. El segundo fichero hace uso de la variable $productos para mostrar el listado. Como se puede ver, el controlador no se mete con HTML; se limita a obtener el listado de la base de datos y pasárselo, tal cual, a la vista. RazonesDe este modo, el código que "hace algo" está perfectamente separado del código dedicado a crear HTML, lo que ayuda a evitar el spaghetti. 3. V de VistaLa vista es la parte de la aplicación dedicada a generar HTML. Puede ser simple HTML estático:
O HTML dinámico generado en respuesta a una consulta, por ejemplo:
La vista no debería llamar a ninguna función; debería limitarse a construcciones de control de flujo simple: if, for/foreach, while, ... Todas las variables empleadas por la vista deberían proceder del controlador; utilizar directamente variables procedentes del usuario es una práctica muy peligrosa. RazonesTener la vista separada del controlador permite cambiar la aplicación para que genere, en lugar de HTML, algo distinto (por ejemplo, WML), sin tener que tocar más que una parte completamente delimitada del código. Básicamente, MVC es esto. Lo demás (objetos, etc) son refinamientos. Jacobo Tarrío Last modified: Tue Dec 3 14:35:55 CET 2002 $Id: mvc.html,v 1.2 2002/12/03 13:36:12 jtarrio Exp $ Última actualización: 2007-04-29 10:56:59-05 |
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: |