문제

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?

도움이 되었습니까?

해결책

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.

다른 팁

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)

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top