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

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?

Previous Burocracia: Matricular un vehículo histórico
Next Cómo habilitar Telnet y FTP en Linux.

About author

plfgavilan
plfgavilan 21 posts

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.

You might also like

Desarrollo 1Comments

Truco: Abortar peticiones AJAX pendientes antes de enviar otra

En algunas ocasiones interesa cancelar o detener varias peticiones AJAX que ya han sido realizadas. En un sistema muy asíncrono, puede que unas llamadas sean más prioritarias que otras o

Inteligencia Artificial 1Comments

Inteligencia Artificial en Videojuegos móviles

Para garantizar el éxito comercial de los videojuegos para móviles es necesario asegurar un algoritmo de Inteligencia Artificial que suponga al jugador un desafío ni demasiado elevado ni demasiado bajo. Pese

Desarrollo 0 Comentarios

Los lenguajes de programación más utilizados en 2015

Si eres programador, tienes que estar atento siempre a las últimas tendencias y cuáles son los lenguajes de programación más utilizados. En un mundo tan cambiante como el tecnológico, los

4 Comentarios

  1. Alfonso J. Ramos
    julio 15, 15:22 Reply

    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.

    • PedroLuis
      julio 15, 22:48 Reply

      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

      • Alfonso J. Ramos
        julio 15, 23:19 Reply

        Estaré pendiente de las nuevas publicaciones, al fin y al cabo ya agregué este sitio a mi lector RSS (hay gente que usa eso :P).

        En cuanto a los cursos, no es la cantidad sino la calidad. Te concedo que difícilmente se podrá aportar algo nuevo, sin embargo hay valor en organizar, agrupar, presentar y hacer accesible el conocimiento. Pero esa es otra historia y será contada en otro momento.

        Mencionas participar en el blog publicando artículos, ya había leído que “Este blog está abierto a cualquiera que desee colaborar con nosotros” sin embargo eso no me da un paso a seguir, estoy suponiendo que tengo que escribir por correo, me puedes confirmar ese dato? Sería mucho mejor que [No Me Hagan Pensar][1] (El libro de usabilidad web de Steve Krug, recomendado).

        [1]: http://www.amazon.com/gp/product/0321344758/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0321344758&linkCode=as2&tag=cds097-20

Deja un comentario