BorrowBits - ciencia y tecnología

Modelo Vista Controlador: Cómo implementarlo de forma sencilla y rápida con PHP

Ya hemos hablado en varias ocasiones del Modelo Vista Controlador. En PHP existen frameworks muy completos como Symfony o CakePHP; sin embargo, en este artículo vamos a describir una construcción manual de un MVC en PHP. La implementación mas básica del modelo vista controlador consta de tres archivos: controlador.php, modelo.php y vista.php.

#Controlador.php
 $ajax = $_POST["ajax"];
 if (!empty($ajax)){
 //En caso que tengamos varios tipos de peticiones ajax,
 //podemos diferenciar por una variable de control que enviamos desde la vista:
  case 1:
    require('view_1_ajax.php'); break;
  case n:
    require('view_n_ajax.php'); break;
 }else{
 //Carga de la vista principal
   require('vista.php');
 }

En el archivo del Modelo implementamos una función por cada estructura de datos requerida:

#modelo.php
include 'db_connect.php';
function getNameById($id){
   $row = mysql_fetch_array(mysql_query(
      "SELECT `name`FROM `table` WHERE `id`='".$id."' "
   ) );
   return $row["name"];
}

Y finalmente en la Vista implementamos la plantilla que nos haga falta. La idea es dejar disponibles todas las variables desde el controlador para simplemente imprimirlas en la vista:

 #vista.php
 <html>
 <?php foreach($data as $value) { ?>
   <div>
     <?php echo $value; ?>
   </div>
 <?php } ?>
 ?>

De esta manera, tenemos perfectamente desacopladas la lógica, la vista y las consultas a la base de datos. Esto hace que el desarrollo de aplicaciones sea muy cómodo, más modular, se puede organizar el trabajo en equipo mucho mejor y lo más importante: podemos modificar nuestra interfaz gráfica o cambiar de base de datos modificando sólo los archivos implicados en la vista y el modelo.

Como decíamos, existen ya muchos frameworks que están basados en este modelo. Puedes echar un vistazo a este artículo sobre conceptos básicos de Symfony2 y a nuestra guía de instalación para este potente framework.

¿Qué os parece? ¿Cómo hacéis vosotros para implementar el modelo vista controlador en vuestras aplicaciones?

plfgavilan

Ingeniero de telecomunicaciones con casi 4 años de experiencia en la ingeniería de software. Forma parte del proyecto Borrowbits desde hace varios años, donde colabora como escritor.

4 comentarios

  • Está bastante claro tu articulo, aunque tanto que decir dos cosas que puede resultar engañoso para principiantes:

    1) las funciones mysql_* estan obsoletas, te recomiendo mostrar ejemplos con mysqli_* pues así no tienes que cambiar tu diseño.

    2) No hay validación ni saneamiento de datos, lo más grave al respecto en este aspecto es que tienes una inyección SQL esperando a ser explotada… Entiendo que es un ejemplo, pero no falta el que copia y pega.

    Al menos el hecho que no hayas puesto el switch en Controlador.php evitará que copien y peguen sin al menos revisar el código. Hay otros detalles, aunque nada grave: No cerrar la conexión a la base de datos de forma explicita, y la forma en que está escrito Vista.php puede resultar confusa, soy partidario de nowdoc para estos casos.

    • Hola Alfonso,
      antes de nada, gracias por leer el artículo y gracias por contestar.

      El objetivo de mi artículo, era el de darle un enfoque didáctico y muy sencillo. Y más que una “plantilla” para copiar y pegar, es simplemente mi idea sobre modelo vista controlador plasmada en unas pocas lineas: Para que alguien que no haya usado nunca el MVC, pueda entenderlo mediante un ejemplo práctico en cuestión de minutos.
      Documentación sobre este tema puedes encontrar por todos lados. Entonces, no creo que aporte nada nuevo si doy un ejemplo completo con todo lujo de detalles. Artículos y cursos así hay mil, tanto gratis como de pago. Lo que trato de aportar aquí, es hacer que el lector pueda entender en que consiste de forma práctica esto del MVC en a penas un par de minutos.

      Los puntos que comentas son muy interesantes: casualmente tengo un artículo preparado para publicación sobre validaciones en el cliente, con lo cual me acabas de recordar(aunque pueda parecer obvio, pero no para novatos) la importancia de que comente no olvidar validar los datos en el servidor, que es lo que realmente le da robustez y seguridad a la aplicación.

      Gracias por tu interes y por tu feedback. Aprovecho para invitarte a participar en el blog con un artículo y para comentarte también que te avisaré personalmente cuando publiquemos algo relacionado con los puntos que me has comentado por si quieres volver a dejar tu opinión.

      Un abrazo, Pedro

Suscríbete

¡Sácale el máximo partido a BBits!

Introduce tu dirección de correo electrónico para seguir este Blog y recibir por email las nuevas publicaciones, si has leído y aceptas las Políticas de Privacidad, Cookies y Aviso Legal.

Recíbelo gratis al suscribirte

Webs amigas

  • Frikilogia.- Blog Multi-Tematico orientado a todos los campos del frikismo.
  • Meridiem90.tv.- Mira la TV gratis en HD. Canal Plus y Gol TV, todo el futbol desde tu navegador.
  • JITKey.- Startup enfocada en la gestión de alojamientos turísticos.

Bits del pasado

Síguenos en FB