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?