Atualmente, estou no processo de desenvolver minha própria estrutura PHP 5.3 HMVC chamada Alloy . Como sou investido e vendido pesadamente no HMVC, pensei em oferecer um ponto de vista diferente e talvez uma explicação melhor de por que o HMVC deveria ser usado e os benefícios que ele traz.
O maior benefício prático do uso de uma arquitetura HMVC é a "widgetização" das estruturas de conteúdo. Um exemplo pode ser comentários, classificações, exibições de feed RSS do blog ou do blog ou a exibição do conteúdo do carrinho de compras de um site de comércio eletrônico. É essencialmente uma parte do conteúdo que precisa ser exibida em várias páginas e, possivelmente, mesmo em lugares diferentes, dependendo do contexto da solicitação HTTP principal.
As estruturas MVC tradicionais geralmente não fornecem uma resposta direta para esses tipos de estruturas de conteúdo; portanto, as pessoas geralmente acabam duplicando e alternando layouts, usando auxiliares personalizados, criando suas próprias estruturas de widget ou arquivos de biblioteca ou obtendo dados não relacionados das principais requisições solicitadas. Controlador para avançar até a Visualização e renderizar em parcial. Nenhuma dessas opções é particularmente boa, porque a responsabilidade de renderizar um determinado conteúdo ou carregar os dados necessários acaba vazando para várias áreas e duplicando nos locais em que é usada.
HMVC, ou especificamente a capacidade de enviar sub-solicitações a um Controlador para lidar com essas responsabilidades é a solução óbvia. Se você pensar no que está fazendo, ele se encaixa exatamente na estrutura do controlador. Você precisa carregar alguns dados sobre comentários e exibi-los no formato HTML. Então, você envia uma solicitação aos comentários do Controller com alguns parâmetros, ele interage com o Model, escolhe uma View e a View exibe o conteúdo. A única diferença é que você deseja que os comentários sejam exibidos em linha, abaixo do artigo do blog que o usuário está visualizando, em vez de uma página de comentários completos completamente separada (embora com uma abordagem HMVC, você possa realmente atender a solicitações internas e externas com o mesmo controlador e "kill dois coelhos com uma cajadada ", como diz o ditado). A respeito disso, O HMVC é realmente apenas um subproduto natural da busca por maior modularidade do código, reutilização e manutenção de uma melhor separação de preocupações. Este é o ponto de venda da HMVC.
Portanto, embora seja interessante pensar no artigo TechPortal de Sam de Freyssinet sobre a expansão com o HMVC, não é onde mais de 90% das pessoas que usam as estruturas do HMVC obterão benefícios reais, práticos e diários.