Archivo de la etiqueta: arquitectura

Arquitectura Web MVC para torpes (con todos los respetos, ojo)

Arquitectura MVC. Ahora podría ponerme a hablar de encapsulaciones, de capas lógicas, de motores o del apareamiento del cangrejo ermitaño. Pero no, voy a poneros un ejemplo sencillo de como empezar a trabajar siguiendo esta arquitectura y ojo, no es una definición exacta ni pretende serlo. Para teoría teneis 500 páginas en Google hablando de MVC. Eso sí, definamos primero cual es el objetivo: evitar guarrerias en el código, poner cada cosa en su sitio y facilitar el mantenimiento a posteriori.

Terminología breve (3 lineas):

M: Modelo (model), esto es, nuestras clases y operaciones

V: Vista (view), lo que mostramos al usuario (los HTML para entendernos).

C: Controlador (controller), un ficherito al que podemos llamar controller.php y es el que decide que hacer en cada momento.

¿Cómo debemos usar esto?

Imaginemos un formulario de alta de cliente. Vamos a darlo de alta y mostrar al usuario un mensaje de OK. Entonces tendriamos:

frm_cliente.html. Fichero con la vista del formulario de altas. El formulario tendrá un action que llevará los datos al controlador y añadiremos un parámetro adicional que será la operacion que queremos que realice, es decir:

...
<form ... action ="controller.php?task=insertar_cliente"/>
...

controller.php. Fichero que hará de controlador. Este fichero recoge el valor del parámetro task y dependiendo de su valor importará el proceso que debe lanzarse. Por ejemplo:

...
switch ($task) {
   case "insertar_cliente" :
      require("process_insertar_cliente.php"); break;
   case "editar_cliente":
      ...
}
...

La parte relacionada con el modelo entraría ahora en juego, un ejemplo del fichero process_insertar_cliente.php debería recoger los datos enviados por el formulario, instanciaría un objeto cliente que contendría todos esos parámetros y llamaríamos al método insertar, que nos los guardaría en la base de datos, si todo va ok, el controller.php redireccionaría a una página de ok.

...
// para evitar mas código, supongamos que he recogido

//los parámetros $_POST y los tengo en variables

$l_obj_cliente = new cliente();

$l_obj_cliente->set_nombre($l_str_nombre);

$l_obj_cliente->set_nombre($l_str_apellidos);

// insertamos y seteamos a true o false una

// variable que posteriormente el controller

// tratará para enviarnos a página de error o éxito

$l_b_ok = $l_obj_cliente->insertar();
unset($l_obj_cliente);

y muy a grosso modo eso es todo.