2010-06-10 4 views
5

Also ich glaube, ich verstehe das Cascading-Dateisystem in seinen Grundbegriffen, aber ich kann nicht scheinen, meinen Kopf um die 'H'ierachy-Struktur des MVC zu wickeln. Könnte jemand mir die Vorteile der Verwendung von HMVC über MVC und seine grundlegende beabsichtigte Funktionalität erzählen?Kohana 3.0 HMVC Struktur in Laien?

Danke für Ihre Zeit!

Antwort

5

HMVC ist besser für Widgets geeignet. Beispiel: Ein Kalender-Widget verfügt möglicherweise über einen eigenen Controller, eigene Modelle und Ansichten. Sie können den Controller einfach aufrufen, um eine bestimmte Ansicht von der Hauptseite aus zu rendern, um das Widget einzubetten.

Der Schwerpunkt liegt auf wiederverwendbaren GUI-Elementen. Siehe hier für zusätzliche Informationen: http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html.

Edit: Hier ist eine tatsächliche PHP-centric Verbindung: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/. Scheint auch schönere Illustrationen zu haben.

+0

Würdest du dann argumentieren, einfach ein MVC-Framework für eine größere Website zu verwenden? –

+1

Die Leute sagen, dass HMVC ist skalierbarer, aber es hängt davon ab, wie Ihre Website ist. Nur weil eine Website groß ist, heißt das nicht, dass sie Widgets hat oder umgekehrt. –

5

Sie können intern eine Anfrage für eine Seite (Controller und Aktion wird von den Routen gefunden) durchführen. Sie können beispielsweise Folgendes tun:

class Controller_Menu extends Controller 
{ 
    public function action_index() 
    { 
     $this->request->response = view stuff ... 
     $this->request->response->set('...', ...) // some vars 
    } 
} 

und

class Controller_Home extends Controller 
{ 
    public function action_index() 
    { 
     $this->request->response = ...; // some view stuff... 
     $this->request->response->set('menu', 
      Request::factory('menu')->execute()->response // here happens the magic 
     ); 
    } 
} 

Jede Seite, die ein Menü haves nicht die gesamte Logik zu tun haben, um das Menü usw. (zum Beispiel von Modellen) zu laden. Sie stellen lediglich eine Anfrage an den Controller, führen sie aus und erhalten das Ergebnis. Sehr nützlich bei richtiger Anwendung.

+0

Ich denke, ich habe es jetzt :) Das ist eigentlich sehr praktisch. Danke –

3

Leute in den KO3-Foren haben die HMVC-Fähigkeit beschrieben wie das Erstellen einer AJAX-Anfrage ohne die zusätzliche HTTP-Anfrage.

Ein echter Fall vielleicht, wenn Sie ein System erstellen möchten, das eine API als integralen Bestandteil der Anwendung hat. Twitter zum Beispiel. Mit HMVC könnten Sie zuerst die API schreiben und diese dann in der Anwendung verwenden. Dies spart entweder Code-Duplizierung oder eine zusätzliche HTTP-Anfrage.

Im Moment ist die Arbeit auf diese Weise ziemlich begrenzt, hauptsächlich wegen der Art der Anfragen, die gesendet werden können. Here is a forum post that I made a little while ago with regards to this. It may clarify how HMVC could be useful.