21 de octubre de 2013

Arquitectura MVC en PHP

¿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’.

patron_mvc

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:

tabla_articulos

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í:

Resultado final
Resultado final

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.

Deja una Respuesta