Ich bin gerade dabei, mein eigenes PHP 5.3 HMVC-Framework namens Alloy zu entwickeln . Da ich stark in HMVC investiert und dort verkauft bin, dachte ich, ich könnte einen anderen Standpunkt vertreten und vielleicht eine bessere Erklärung dafür, warum HMVC verwendet werden sollte und welche Vorteile es bringt.
Der größte praktische Vorteil der Verwendung einer HMVC-Architektur ist die "Widgetisierung" von Inhaltsstrukturen. Ein Beispiel können Kommentare, Bewertungen, RSS-Feed-Anzeigen von Twitter oder Blogs oder die Anzeige von Warenkorbinhalten für eine E-Commerce-Website sein. Es handelt sich im Wesentlichen um einen Inhalt, der auf mehreren Seiten und möglicherweise sogar an verschiedenen Stellen angezeigt werden muss, abhängig vom Kontext der Haupt-HTTP-Anforderung.
Herkömmliche MVC-Frameworks bieten im Allgemeinen keine direkte Antwort auf diese Art von Inhaltsstrukturen. Daher duplizieren und wechseln Benutzer im Allgemeinen Layouts, verwenden benutzerdefinierte Helfer, erstellen ihre eigenen Widget-Strukturen oder Bibliotheksdateien oder ziehen nicht verwandte Daten aus den angeforderten Hauptdaten Controller zum Durchschieben in die Ansicht und zum teilweisen Rendern. Keine dieser Optionen ist besonders gut geeignet, da die Verantwortung für das Rendern eines bestimmten Inhalts oder das Laden der erforderlichen Daten in mehrere Bereiche gelangt und an den verwendeten Stellen dupliziert wird.
HMVC oder insbesondere die Möglichkeit, Unteranforderungen an einen Controller zu senden, um diese Verantwortlichkeiten zu erfüllen, ist die offensichtliche Lösung. Wenn Sie darüber nachdenken, was Sie tun, passt es genau zur Controller-Struktur. Sie müssen einige Daten zu Kommentaren laden und im HTML-Format anzeigen. Sie senden also eine Anfrage mit einigen Parametern an den Kommentar-Controller, dieser interagiert mit dem Modell, wählt eine Ansicht aus und die Ansicht zeigt den Inhalt an. Der einzige Unterschied besteht darin, dass die Kommentare inline angezeigt werden sollen, und zwar unterhalb des Blog-Artikels, den der Benutzer anstelle einer vollständig separaten vollständigen Kommentarseite anzeigt (obwohl Sie mit einem HMVC-Ansatz sowohl interne als auch externe Anforderungen mit demselben Controller und "kill" bearbeiten können zwei Fliegen mit einer Klappe ", wie das Sprichwort sagt). In dieser Hinsicht HMVC ist eigentlich nur ein natürliches Nebenprodukt des Strebens nach mehr Codemodularität, Wiederverwendbarkeit und einer besseren Trennung von Bedenken. Dies ist das Verkaufsargument von HMVC.
Während der TechPortal-Artikel von Sam de Freyssinet über die Skalierung mit HMVC interessant ist, werden nicht 90% der Menschen, die HMVC-Frameworks verwenden, echte, praktische und alltägliche Vorteile daraus ziehen.