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?
