¿Qué es MVC?
El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que se utiliza en aplicaciones web, permitiendo separarla en 3 capas:
Modelo: Se encarga de interactuar con la base de datos (realizar consultas, actualizar, insertar y eliminar datos; además de ejecutar la regla de negocio.
Controlador: Procesa las peticiones de la página web (vista) y envía los datos a la capa ‘modelo’, para que esta devuelva la información correspondiente que se mostrarán en la vista.
Vista: Es la página web que se muestra al usuario y que contiene la información que proviene del controlador.
Ventajas de utilizar MVC
Permite un fácil mantenimiento de código, pues separa cada uno de los distintos procesos.
Ejemplo 1: Si quisiéramos cambiar de tipo de base de datos, solo hay que modificar la ‘capa modelo’, dejando ‘Controlador’ y ‘Vista’ intactos.
Ejemplo 2: Si una aplicación debe mostrarse en diversos dispositivos como: un navegador web de pc, una Tablet, un celular o cualquier dispositivo móvil, lo único que se tendría que hacer es crear una vista para cada dispositivo, y se utilizaría el mismo ‘Modelo’ y ‘Controlador’.
Para entender mejor el funcionamiento de MVC y sus ventajas, veamos un ejemplo práctico.
Tenemos una base de datos MySQL llamada “almacén”, la cual tiene una tabla llamada ‘artículos’ con la siguiente configuración:
Nota: clave es el campo primario.
El objetivo es poder listar los productos existentes en la tabla, para ello haremos lo que sigue:
1) Creamos un archivo al que llamaremos ‘conexión.php’. Este archivo tendrá la función de conectarse al servidor y a la base de datos. Su código es:
<?php
$conexion = mysql_connect("localhost","root","");
if(!$conexion)
{
die("No se pudo conectar al servidor " . mysql_error());
}
$database = mysql_select_db("almacen",$conexion);
if(!$database)
{
die("No se ha podido seleccionar la base de datos " . mysql_error());
}
?>
2) Modelo. Creamos un archivo llamado ‘modelo.php’, el cual realizará la consulta a la tabla de artículos y mandará el resultado al controlador.
<?php
require("conexion.php");
function getArticulos()
{
Global $conexion;
$resultado = mysql_query('SELECT * FROM articulos',$conexion);
$articulos = array();
while($articulo = mysql_fetch_array($resultado))
{
$articulos[] = $articulo;
}
mysql_close($conexion);
return $articulos;
}
?>
3) Controlador. Creamos el archivo llamado ‘controlador.php’, el cual solo servirá de puente para pasar los datos enviados de ‘Modelo’ a Vista’.
<?php
require("modelo.php");
$articulos= getArticulos();
require("vista.php");
?>
Aunque en este ejemplo el archivo controlador, realiza una función simple, este puede realizar funciones más complejas según sean necesarias, como por ejemplo: autenticar usuarios, manejas las sesiones, validar los datos enviados por GET O POST, etc.
4) Vista. Creamos el archivo ‘vista.php, que es el encargado de mostrar la información al usuario.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Listado de articulos</title>
</head>
<body>
<h1>Listado de Articulos</h1>
<table border="1">
<tr><th>Codigo</th><th>Descripción</th><th>Existencia</th><th>Precio</th></tr>
<?php
foreach($articulos as $articulo)
{
echo "<tr>";
echo "<td>" . $articulo['clave']."</td>";
echo "<td>" . $articulo['descripcion']."</td>";
echo "<td>" . $articulo['cantidad']."</td>";
echo "<td>" . $articulo['precio']."</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
El resultado se vería así:
Apuntes finales
En el archivo conexion.php tienes que configurar los parametros de conexión, en el ejemplo el servidor es localhost, el usuario es root y NO hay contraseña, por eso se dejo en blanco; en tu caso tendras que poner los parametros correspondientes.
$conexion = mysql_connect("servidor","usuario","contraseña");
El archivo con el que podrás visualizar el resultado, es controlador.php, el cual puedes cambiar de nombre por index.php o home.php, pues todos los servidores buscan esos nombres de archivos por defecto; en este ejemplo utilizamos un nombre mas descriptivo con el objetivo de que se entienda mejor.
Si deseas el código completo, descargalo AQUI
Si deseas aprender a programar en PHP, te invitamos a visitar nuestro Curso de PHP, donde aprenderas todo lo necesario para convertirte en u experto programador de páginas web dinamicas con PHP.