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:
function db_quitar_dinero ($cuenta, $cantidad) function db_contar_historias () function db_buscar_productos_de_fabricante ($fabricante) function db_borrar_usuario ($usuario)
Estas funciones tienen "significado": son operaciones "reales" sobre cosas "reales":
function obtener_historias ($num) function transferir_dinero ($cantidad, $orig, $dest) function añadir_carrito ($producto, $unidades, $usuario)
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:
function db_obtener_productos () {
$prod = array();
mysql_pconnect (DBHOST, DBUSER, DBPASS);
mysql_select_db (DBNAME);
$query = "SELECT id, nombre, cantidad, descripcion FROM productos";
$result = mysql_query ($query);
while ($row = mysql_fetch_array ($result)) {
array_push ($prod, $row);
}
return $prod;
}
function obtener_productos ($letra) {
if ($letra == "") {
return db_obtener_productos ();
} else {
return db_obtener_productos_con_letra ($letra);
}
}
Razones
Cada 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, ...)
Usuarios que han visto este tema también han visto...
- Comentarios en PHP
- Dectectar el País del visitante con PHP
- Codificar contraseñas md5
- Compilando Apache y PHP para Linux
- Introducción al PHP y a las librerías
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.