...
  • WebMaster
  • 21 Oct, 2013
  • 0 Comments
  • 3 Mins Leer

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

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.