Por ejemplo, la navegación de un sitio. Alguna vez se pusieron a pensar de que manera se puede implementar algo asi? El usuario tiene que tener la posibilidad de:
- Que el sistema genere la navegación automáticamente. Uno tiene que poder configurar que profundidad esa navegación va a tener, 1, 2, o 3 niveles. Como va a estar distribuida en la pagina, si los 3 niveles en un solo punto, o 1 nivel en la parte superior y los otros a la izquierda o derecha.
- Si el usuario no planea usar una base de datos, tenemos que generar la navegación en base a nuestro directorio, o un archivo de configuración.
Esto ya implica aplicar patrones de diseño para no repetir código, quizas un patrón de estrategia, entre otros. Después esta el tema de la performance, porque generar el menu mil veces al dia si solo se actualiza cada 1 semana? La única solucion es implementar un sistema de Cache. Pero que pasa si estamos trabajando en un servidor con Load Balancer? Se nos complica todo.
Despues cuando seguimos desarrollando el sitio nos damos cuenta que los componentes que son usados para crear el menu, son muy similares a los que tenemos que desarrollar para crear el "mapa" del sitio. Pero se nos olvido crear un Adaptador, lo cual nos lleva a tener que rediseñarlo.
Ahora, no era mas fácil usar una framework que me permita hacer esto:
Código PHP:
echo $menu->getRootNodes($template, $rootNodeSelected);
echo $menu->getChildNodes($template, $childNodeSelected);