Actualmente estoy en el proceso de desarrollar mi propio framework PHP 5.3 HMVC llamado Alloy . Dado que estoy fuertemente invertido y vendido en HMVC, pensé que podría ofrecer un punto de vista diferente, y tal vez una mejor explicación de por qué debería usarse HMVC y los beneficios que trae.
El mayor beneficio práctico de usar una arquitectura HMVC es la "widgetización" de las estructuras de contenido. Un ejemplo podría ser comentarios, calificaciones, pantallas de feed RSS de Twitter o blog, o la visualización del contenido del carrito de compras para un sitio web de comercio electrónico. Es esencialmente un contenido que debe mostrarse en varias páginas, y posiblemente incluso en diferentes lugares, según el contexto de la solicitud HTTP principal.
Los marcos tradicionales de MVC generalmente no proporcionan una respuesta directa para este tipo de estructuras de contenido, por lo que las personas generalmente terminan duplicando y cambiando diseños, utilizando ayudantes personalizados, creando sus propias estructuras de widgets o archivos de biblioteca, o extrayendo datos no relacionados de los principales solicitados Controlador para pasar a la Vista y renderizar de forma parcial. Ninguna de estas opciones es particularmente buena, porque la responsabilidad de presentar un contenido particular o cargar los datos requeridos termina por filtrarse en múltiples áreas y duplicarse en los lugares donde se usa.
La solución obvia es HMVC, o específicamente la capacidad de enviar solicitudes secundarias a un controlador para que se encargue de estas responsabilidades. Si piensa en lo que está haciendo, se ajusta exactamente a la estructura del controlador. Debe cargar algunos datos sobre los comentarios y mostrarlos en formato HTML. Por lo tanto, envía una solicitud al controlador de comentarios con algunos parámetros, interactúa con el modelo, selecciona una vista y la vista muestra el contenido. La única diferencia es que desea que los comentarios se muestren en línea, debajo del artículo del blog que está viendo el usuario en lugar de una página de comentarios completa completamente separada (aunque con un enfoque HMVC, en realidad puede atender tanto las solicitudes internas como las externas con el mismo controlador y "kill" dos pájaros de un tiro ", como dice el refrán). A este respecto, HMVC es realmente un subproducto natural de luchar por una mayor modularidad del código, reutilización y mantener una mejor separación de las preocupaciones. ESTE es el punto de venta de HMVC.
Entonces, si bien es interesante pensar en el artículo TechPortal de Sam de Freyssinet sobre el escalamiento horizontal con HMVC, no es donde más del 90% de las personas que usan marcos HMVC obtendrán beneficios reales, prácticos y cotidianos.