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.