2010-06-10 5 views
5

Donc, je pense que je comprends le système de fichiers en cascade dans ses termes de base, mais je ne peux pas sembler envelopper ma tête autour de la structure 'H'ierachy du MVC. Quelqu'un pourrait-il me dire les avantages de l'utilisation de HMVC sur MVC et ses fonctionnalités de base?La structure HMVC de Kohana 3.0 en termes simples?

Merci pour votre temps!

Répondre

5

HMVC est mieux adapté aux widgets. Par exemple, un widget Calendrier peut avoir son propre contrôleur, ses modèles et son ensemble de vues, et vous pouvez simplement appeler son contrôleur pour afficher une certaine vue depuis la page principale afin d'intégrer le widget.

L'accent est mis sur les éléments GUI réutilisables. Voir ici pour une lecture supplémentaire: http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html.

Editer: Voici un véritable lien centré sur PHP: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/. Semble avoir de plus belles illustrations aussi.

+0

Souhaitez-vous alors argumenter pour utiliser simplement un cadre MVC pour un site Web à plus grande échelle? –

+1

Les gens disent que HMVC est plus évolutif, mais cela dépend à quoi ressemble votre site. Juste parce qu'un site est à grande échelle ne signifie pas qu'il a des widgets, ou vice-versa. –

5

Vous pouvez faire une requête pour une page (le contrôleur et l'action est trouvée par les routes) interne. Vous pouvez le faire par exemple:

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

et

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 
     ); 
    } 
} 

Chaque page d'un menu qui nantis n'avez pas à faire toute la logique de charger le menu, etc. (par exemple des modèles). Vous venez de faire une demande au contrôleur, l'exécuter et obtenir le résultat. Très utile lorsqu'il est utilisé correctement.

+0

Je pense que je l'ai maintenant :) C'est en fait très pratique. Merci –

3

Les personnes sur les forums KO3 ont décrit la capacité HMVC comme faire une requête AJAX sans la requête HTTP supplémentaire.

Un cas réel peut-être si vous voulez construire un système qui a une API en tant que partie intégrante de l'application. Twitter par exemple Avec HMVC, vous pouvez d'abord écrire l'API, puis l'utiliser dans l'application. Cela économise la duplication de code ou une requête HTTP supplémentaire.

En ce moment, cependant, travailler de cette façon est assez limité, principalement en raison du type de demandes qui peuvent être envoyées. Here is a forum post that I made a little while ago with regards to this. It may clarify how HMVC could be useful.

Questions connexes