What Can I Use the HMVC Architecture for?
Asked Answered
A

3

11

the PHP framework I am using (Kohana) recently implemented the HMVC architecture. I have read that it's a layered mvc where requests are made on top of each other. It is a bit like ajax, just purely server-side. I have applied it a bit on some experiments but I can't apply it to any of my projects (because I can't find a need for it). Have you ever used HMVC in a project before? How did it help you?

Anachronous answered 22/2, 2010 at 3:5 Comment(1)
+1, I recently switched to Kohana from Code Igniter and was wondering the same thing.Schlessinger
D
15

It is a bit like ajax, just purely server-side.

That's a good analogy.

HMVC is nice for adding widgets to pages - modular bits of content that you'll reuse on few pages. For example, a shopping cart widget. You could do the same thing in different ways:

  1. A library. We're accustomed to moving reusable code from a controller into a library. Then, from the controller, you could load the results of a call to that library into a view variable.
  2. A view. You could load a view (partial) from within the main view. That view partial could pull in content from models. Calling models from views isn't always popular but it isn't necessarily wrong.

However, Kohana HMVC has a few advantages:

  1. Consistency - HMVC requests are treated the same as external http requests.
  2. Power - HMVC requests have the same Kohana resources as http requests including routes.
  3. Pluggability - When called from a view, an HMVC request doesn't have a coupling between the controller (which assigns the library results to a view) and a view placeholder. You only touch one file as opposed to two.

I'm starting to appreciate the case for HMVC and scalability with http requests as linked by Kiall. The same thing could be done with CURL. However, it might be more natural to design with Kohana HMVC than CURL from the start.

Devilry answered 23/2, 2010 at 8:28 Comment(1)
the article link above is good, but this presents a short yet concise answer. thanks!Anachronous
U
8

Well - Sam de Freyssinet (aka samsoir), one the of Kohana developers, recently published an article dealing with this question.

http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

While its not the only use for HMVC - It is one of its more popular uses. The article is mainly concerned with scalability (as in, number of requests per second) but code scalability (as in, how easy/hard is the code to maintain) can be "solved" with the same ideas..

Hope this helps :)

(Side note - his code samples are based on Sam's personal changes to Kohana - see the note at the end of the article)

Uri answered 22/2, 2010 at 23:36 Comment(1)
I actually just noticed the date in the URL is today.. good timing :)Uri
R
2

In a simple project you might not even find a real use for HMVC architectural pattern. And you shouldn't even try. Here is why :

The whole point in creating a HMVC architecture was to make MVC a bit DRY'er. One of the main benefits of HMVC is code reuse. It lets you have fragments which repeat all over your application( sometimes in same spot , other times - not ).

If you are writing as small test application, there wont be any repeatable fragments. Thus, no need to use full HMVC potential. You just end up with 1 level of HMVC, which is you standard MVC.

Here you can read the original publication, which introduced HMVC. In 2000th.

Rabbinical answered 1/5, 2011 at 22:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.