Solución Semana 4: "Sistema Modular" (I y II de V)

Retomando la publicación de soluciones al desafío planteado para la Semana4, lo que se solicitaba en este requerimiento era:

Sistema modular: centralizar las invocaciones que puedan venir únicamente a través del index.php y no del resto del sistema. Solo se ingresa por index.php y luego a los módulos correspondientes. Evitar el acceso por cualquier ruta distinta a index (concepto "web modular").

Aquí casi puedo resumir la respuesta enlazando un muy buen artículo hecho hace unos cuantos años por mi estimadísimo colega Pablo Rigazzi (ZonaPHP, alias Webstudio en Forosdelweb) llamado: Creando Webs Modulares

Los cambios que deberíamos hacer:
  • index.php - agregarle la posibilidad que procese invocaciones de parámetros a través de la url (método "get") así ir llamando por el nombre del módulo a cada parte del sistema, siempre entrando por el index.php, por ejemplo index.php?m=listado_usuarios.
  • listado_usuarios.php - este fuente funcionaría sin problemas si es requerido desde el index.php, pero vamos a hacer algunos cambios ya que ahora buscaremos que todas las invocaciones entren por el index.php. Cambiamos el nombre del archivo por la nomenclatura de clases ListadoUsuarios.class.php, sacamos toda ejecución automática dentro de la clase, y ahora esta va a funcionar dentro de index.php. Aunque se intente acceder a ella, no ejecutará nada de forma independiente. Y para terminar de ordenar la estructura vamos a mover esta clase al paquete "presentación", pues esa es su función.
  • consultar_usuarios.php - el procedimiento es exactamente igual que el caso anterior.
  • mostrar_usuario.php - aquí es un poco más complejo, pero nada qué asustarse. Justamente este fuente es el primero que recibe verdaderamente un parámetro además del nombre del módulo (id del usuario). Lo que hay que hacer es pasar el array entero $_GET ó $_POST al método de la nueva clase MostrarUsuario.class.php que estará alojada en el subdirectorio o paquete "presentación".
  • menúes - no hay que olvidar actualizar los templates (sitio_menu.tpl.html) para que dejen de apuntar a listado_usuarios.php y consultar_usuario.php desde la raíz y pasen a usar invocaciones a los nombres de los módulos directamente: index.php?m=listado_usuarios
Si queremos ser muy prolijos y ayudar a que puedan seguir mejor los cambios implementados -¿para eso sirve la documentación, o no?- les presento cómo quedaría ahora nuestro diagrama de paquetes:

No necesariamente esta solución propuesta es la única existente ni la mejor, pero de forma simple ejemplifica la esencia del desafío y el concepto que se quiere transmitir.

En breves momentos estará actualizado el fuente del proyecto "surforce-proyectobase" para que puedan bajarlo y estudiar el funcionamiento del mismo.

PD: ya está la planilla con los puntos ganados.

10 comentarios:

colombiansoe dijo...

mmm ya veo.. ok perfecto ya vi mis errores :-)... ya actualicé mi proyecto... bye... a estudiar sus cambios...

Enrique Place dijo...

Estimada PaoPao:

Bien, impecable, esa es la idea, aprender de los errores ;-)

jelarrosa dijo...

impresionante!!!, la verdad que luego de estar a punto de abandonar por mi primer entrega muy mala, el dicho "persevera y triunfarás" está dando resultados y la verdad es que estoy aprendiendo mucho de mis errores que a veces son horrores y mucho más de todos ustedes , felicitaciones a todos!!! y sigan adelante.

Enrique Place dijo...

Estimado jelarrosa:

> impresionante!!!, la verdad que
> luego de estar a punto de abandonar
> por mi primer entrega muy mala, el
> dicho

El mérito no es tanto llegar, es levantarse todas las veces que te caes hasta llegar.

Por eso les repito que no le den tanta importancia a los puntos, es una forma de medir más que el éxito el error, y luego corregirlo.

El valor que incrementan no se mide con los puntos, el valor está en lo que aprendieron con sus equivocaciones.

El proceso es el que enseña, no los números fríos.

Adelante! ;-)

Alfonso Sevilla dijo...

mmm, en los ultimos desafios no me ha ido muy bien, pero me he percatado de mis errores, ahora, saliendome un poco del tema, pregunto acá algo sobre el eclipse for php, cada vez que abro un archivo php de mi pc, me lo trata como si lo estuviera descargando de algun sitio web, alguien sabe como configurar esto, ya que es muy molestoso....Gracias.

Enrique Place dijo...

Estimado lucasarts:

Bruce Lee dijo una vez:

"Yo no te estoy enseñando nada, solo te ayudo a que te conozcas a ti mismo" ;-)

Sobre tu pregunta, no entendí la explicación del problema. Si puedes hacerla otra vez y con más detalle de lo que haces, y que sucede, te agradezco.

Alfonso Sevilla dijo...

Enrique:

Disculpa por el atraso de este mensaje, bueno, el tema es el siguiente, es bien sencillo cada que vez que abro un archivo php desde este editor me pregunta si deseo descargarlo, a igual cuando uno descarga archivos por internet, espero que se entienda....gracias...

Enrique Place dijo...

Estimado lucasarts_18:

No, nunca me pasó. :-(

Dentro del eclipse? que raro...

Alfonso Sevilla dijo...
Este comentario ha sido eliminado por el autor.
Alfonso Sevilla dijo...

Enrique:

Claro que si, dentro del eclipse, pero curiosamente solo pasa con los archivos que están con SVN, los demás archivos de un proyecto cualquiera y que no tengan SVN los abre sin problemas desde el navigator del eclipse.

Gracias...

Entradas populares