Obecnie jestem w trakcie tworzenia własnego frameworka PHP 5.3 HMVC o nazwie Alloy . Ponieważ jestem mocno zainwestowany i sprzedawany na HMVC, pomyślałem, że mógłbym zaproponować inny punkt widzenia i być może lepsze wyjaśnienie, dlaczego należy używać HMVC i jakie przynosi korzyści.
Największą praktyczną zaletą korzystania z architektury HMVC jest „widżetizacja” struktur treści. Przykładem mogą być komentarze, oceny, wyświetlanie kanałów RSS na Twitterze lub blogu lub wyświetlanie zawartości koszyka na zakupy w witrynie handlu elektronicznego. Zasadniczo jest to fragment treści, który musi być wyświetlany na wielu stronach, a być może nawet w różnych miejscach, w zależności od kontekstu głównego żądania HTTP.
Tradycyjne frameworki MVC na ogół nie zapewniają bezpośredniej odpowiedzi na tego typu struktury treści, więc ludzie generalnie powielają i przełączają układy, używając niestandardowych pomocników, tworząc własne struktury widżetów lub pliki biblioteczne lub pobierając niepowiązane dane z głównego żądanego Kontroler, aby przejść do widoku i renderować w części. Żadna z tych opcji nie jest szczególnie dobra, ponieważ odpowiedzialność za renderowanie określonego fragmentu treści lub ładowanie wymaganych danych kończy się przeciekiem do wielu obszarów i powielaniem w miejscach, w których są używane.
HMVC, a konkretnie możliwość wysyłania żądań podrzędnych do kontrolera w celu obsługi tych obowiązków, jest oczywistym rozwiązaniem. Jeśli myślisz o tym, co robisz, dokładnie pasuje to do struktury kontrolera. Musisz załadować dane o komentarzach i wyświetlić je w formacie HTML. Wysyłasz więc żądanie do kontrolera komentarzy z niektórymi parametrami, współdziała z modelem, wybiera widok, a widok wyświetla zawartość. Jedyną różnicą jest to, że chcesz, aby komentarze były wyświetlane w tekście, pod artykułem na blogu, który przegląda użytkownik, zamiast na całkowicie oddzielnej stronie z komentarzami (chociaż w podejściu HMVC możesz obsługiwać zarówno żądania wewnętrzne, jak i zewnętrzne za pomocą tego samego kontrolera dwie pieczenie na jednym ogniu ”, jak to się mówi). Pod tym względem, HMVC jest tak naprawdę naturalnym produktem ubocznym dążenia do zwiększonej modułowości kodu, możliwości ponownego wykorzystania i lepszego rozdzielenia problemów. To jest punkt sprzedaży HMVC.
Więc chociaż artykuł Sama de Freyssineta w TechPortalu na temat skalowania z HMVC jest interesujący do przemyślenia, nie jest to miejsce, w którym ponad 90% osób korzystających ze struktur HMVC odniesie z tego rzeczywiste, praktyczne, codzienne korzyści.