Páginas

lunes, 28 de marzo de 2011

Entendiendo el MVC

En esta entrada vamos a hablar un poco del MVC, con la intención de hacerlo entendible a personas que se estén iniciando con este patrón de diseño lo llevaremos desde un punto de vista sencillo y entendible para cualquiera que tenga nociones de programación.

Pondremos manos a la obra haciendo una pequeña definición de este patrón de diseño.


El Patrón MVC sus siglas en ingles significan Model View Controller que significa Modelo Vista Controlador, es una arquitectura de Software que define la separación de los datos que conforman la vista de la lógica de una aplicación.

Esto se hace con la finalidad de que cada una de las partes de una aplicación solo realice lo que está en su responsabilidad, además de que le da mayor entendimiento a nuestros desarrollos y los hace más fácil de mantener, ya que la parte del diseño solo tiene la cantidad de código de programación que necesita al igual que en la parte que conforma nuestro código del negocio solo se va a encontrar lógica de programación en el lenguaje que estemos trabajando (PHP en nuestro caso) y no como algunos estamos acostumbrados muchos a hacer cosas como estas:



Insertar un registro


Como vemos tenemos el código de nuestro negocio que es la inserción del registro y la vista en un mismo archivo cosa que no es de lo mas recomendable y es lo que este patrón desea evitar.

Ya sabemos que es lo que no quiere el MVC pero veamos en si lo que está detrás de sus siglas.

  • V (View o Vista): Aunque la primera letra del patrón es la M decidí mejor hablar primero de la vista ya que es lo más sencillo de explicar al momento de trabajar con este patrón.

    La vista como su nombre lo indica es la parte visual, lo que el usuario final visualizara en su aplicación.

    La vista podemos establecerla como la primera fase de este patrón ya que la vista es la que comunica al usuario lo que quiere ver, esta tiene acceso directo al modelo como podemos observar en la imagen que tenemos en la parte superior y es esta la que transmite los datos a la aplicación para hacer el proceso que necesitemos

  • M (Model o Modelo):El modelo es lugar donde se encuentra la lógica del negocio de nuestro desarrollo, es ahí donde se procesan todos los datos provenientes de la vista.
  • C (Controller o Controlador): Es el encargado de hacer la conexión entre la parte visual y la lógica del negocio de nuestro desarrollo (MODELO), este se encarga de pasar los datos de la vista hacia el modelo y según la respuesta que este le entregue selecciona la vista a cargar pasando los datos provenientes del modelo.

Bien hasta ahora hemos visto la teoría de este patrón pero como se construye una aplicación con él??

Vamos a trabajar de la manera más básica posible, para ello vamos a trabajar un poco el PHP de manera estructurada aunque mayor provecho a este patrón se saca trabajando OOP; Planteemos un ejemplo que todo sistema debe de tener una gestión de usuarios, entonces normalmente cuando trabajábamos sin el patrón hacíamos algo como esto



Como podemos observar es un login básico que hace todo el proceso en la misma página, si llegara un usuario y se logueara correctamente lo haría, pero como vemos tenemos lo que yo llamo un arroz con mango en nuestro código, pasemos este pequeño login al patrón MVC.

Comencemos con la vista

login.php

Como podemos observar la vista de nuestro pequeño sistema de login es todo lo que corresponde al HTML dejando todo el proceso ya que este corresponde a la lógica de nuestro negocio la cual estará en el modelo.

Ahora nuestro modelo.
usuario.php

Como vemos en nuestro modelo hicimos una función ya que el modelo del usuario debería tener toda la lógica que corresponde a la gestión de estos, como registrar, modificar y eliminar usuarios, para el ejemplo fuera lo más sencillo posible trabaje con el login ya que es algo que normalmente se hace en cualquier tipo de sistema.

Pero el controlador donde queda??

Como vemos ya tenemos la parte visual de nuestro login y tenemos la parte del negocio de nuestra aplicación pero para que el controlador y donde queda?? Como ya definimos el controlador comunica los datos de la vista al modelo entonces como debe de ser este?? Algo como esto

usuariosController.php



Con este pequeño controlador podemos observar cual es la función de este, sencillamente pasar datos de la vista al modelo y según la respuesta cargar la vista que se necesite según los datos obtenidos del modelo, sencillo no??

Espero que esta entrada ayude a los que están comenzando a conocer este patrón de diseño a entenderlo un poco mejor lo hice lo más sencillo posible según mi criterio :-), saludos hasta una próxima entrada.

11 comentarios:

  1. No se ve el código de usuario.php ni usuariosController.php, aúnque tu explicación del ejemplo que das es clara, considero que un ejemplo más grande y mejor elaborado sería de mucha más ayuda.

    Gracias por tu post, saludos :)

    ResponderEliminar
  2. amigo mr_robb a mi si se me ve el código de usuario.php y usuarioController.php no se si sea error de conexión en ese momento, el ejemplo que coloque es algo sencillo si te fijas no utilice clases ni siquiera, solo intente explicar de la manera mas sencilla posible el MVC, pero como tu indicas seria bueno que elaborara mas el ejemplo estoy pensando en hacer una segunda parte del artículo donde trabaje de manera orientado a objetos gracias por tus sugerencias, saludos

    ResponderEliminar
  3. Saludos yo tampoco veo el codigo en usuario.php y usuarioController.php saludos muy buena explicación pero se necesita ver el código

    ResponderEliminar
  4. Gracias, me salvaste!! bueno el ejemplo y se ve el código

    ResponderEliminar
  5. Excelente me alegra que te haya sido claro, y que ya se vea el código, porque ya dos personas me habían reportado el bug que creo que ya es mas del blogger, saludos

    ResponderEliminar
  6. Asi es, este nuevo modelo de programación se esta manejando mucho en las empresas, una herramienta muy utilizada es el cakePHP aunque tiene sus limitantes. pero tu explicación es muy buena bro, felicitaciones.

    ResponderEliminar
  7. Gracias or el ocomentario amigo RIPER_EL_NEW, el hecho es que se usa porque es un patrón que dicta buenas prácticas de programación. La mayoría de los frameworks de php implementan este, en cuanto a cakePHP no tuve muy buena experiencia con el, a demás que me indigno que me obligara a trabajar con php4, sin embargo es una opinión muy personal, actualmente estoy viendo mucho sobre yiiframework, symfony2 y zendframewor2 (aunque este esta en beta), gracias nueva mente por el comentario, saludos

    ResponderEliminar
  8. La verdad que no se ven las imagenes, una lastima porque el contenido es genial!

    Saludos!

    ResponderEliminar
    Respuestas
    1. gracias por el reporte ya veo que paso con el highlihg, saludos

      Eliminar
  9. No se ve el código, pero bien didáctico.

    Gracias! Me sirvió :)

    ResponderEliminar
  10. bueno el código esta... "use the source Luke". si colocan ver código lo encontrar. y gracias me fue de ayuda

    ResponderEliminar