Attualmente sto sviluppando il mio framework HMVC PHP 5.3 chiamato Alloy . Dal momento che sono fortemente investito e venduto su HMVC, ho pensato di poter offrire un punto di vista diverso e forse una spiegazione migliore del perché HMVC dovrebbe essere usato e dei vantaggi che ne derivano.
Il più grande vantaggio pratico dell'utilizzo di un'architettura HMVC è la "widgetizzazione" delle strutture di contenuto. Un esempio potrebbe essere la visualizzazione di commenti, valutazioni, feed RSS o blog di Twitter o la visualizzazione dei contenuti del carrello per un sito Web di e-commerce. È essenzialmente un contenuto che deve essere visualizzato su più pagine e possibilmente anche in luoghi diversi, a seconda del contesto della richiesta HTTP principale.
I framework MVC tradizionali in genere non forniscono una risposta diretta per questi tipi di strutture di contenuto, quindi le persone generalmente finiscono per duplicare e cambiare layout, usando helper personalizzati, creando le proprie strutture di widget o file di libreria o estraendo dati non correlati dai principali richiesti Controller per passare alla vista e renderizzare in parte. Nessuna di queste sono opzioni particolarmente buone, perché la responsabilità di rendere un determinato contenuto o di caricare i dati richiesti finisce per perdere in più aree e duplicarsi nei luoghi in cui viene utilizzato.
HMVC, o in particolare la capacità di inviare sotto-richieste a un Controller per gestire queste responsabilità è la soluzione ovvia. Se pensi a quello che stai facendo, si adatta perfettamente alla struttura del Controller. Devi caricare alcuni dati sui commenti e visualizzarli in formato HTML. Quindi invii una richiesta al controller dei commenti con alcuni parametri, interagisce con il modello, seleziona una vista e la vista visualizza il contenuto. L'unica differenza è che vuoi che i commenti vengano visualizzati in linea, sotto l'articolo del blog che l'utente sta visualizzando invece di una pagina di commenti completa completamente separata (anche se con un approccio HMVC, puoi effettivamente servire sia richieste interne che esterne con lo stesso controller e "kill due uccelli con una fava ", come dice il proverbio). A questo proposito, HMVC è in realtà solo un sottoprodotto naturale della ricerca di una maggiore modularità del codice, riutilizzabilità e mantenimento di una migliore separazione delle preoccupazioni. QUESTO è il punto di forza di HMVC.
Quindi, mentre l'articolo TechPortal di Sam de Freyssinet sul ridimensionamento con HMVC è interessante da pensare, non è dove il 90% + delle persone che usano i framework HMVC ne trarranno benefici reali, pratici e quotidiani.