tags:

views:

257

answers:

3

So, I think i understand the cascading filesystem in it's basic terms, but I can't seem to wrap my head around the 'H'ierachy structure of the MVC. Could anyone tell me the advantages of using HMVC over MVC and it's basic intended functionality?

Thanks for your time!

+3  A: 

You can make a request for a page (controller and action is found by the routes) internal. You can do this for example:

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

and

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

Every page who haves a menu dont have to do all the logic to load the menu etc. (e.g. from models). You just make a request to the controller, execute it, and get the result. Very usefull when used correctly.

VDVLeon
I think I got it now :) That's actually very handy. Thanks
soren.qvist
+4  A: 

HMVC is better suited to Widgets. For example, a Calendar widget might have its own controller, models, and set of views, and you can simply call its controller to render a certain view from inside the main page to embed the widget.

The emphasis is on reusable GUI elements. See here for additional reading: http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html.

Edit: Here's an actual PHP-centric link: http://techportal.ibuildings.com/2010/02/22/scaling-web-applications-with-hmvc/. Seems to have nicer illustrations as well.

Lotus Notes
Would you then argue to use simply a MVC-framework for a larger scale website?
soren.qvist
People say that HMVC is more scalable, but it depends what your site is like. Just because a site is large scale doesn't mean it has widgets, or vice-versa.
Lotus Notes
+2  A: 

People on the KO3 forums have described the HMVC ability like making an AJAX Request without the extra HTTP Request.

A real world case maybe if you want to build a system that has an API as an integral part of the application. Twitter for example. With HMVC you could write the API first, and then use that within the application. This saves either code duplication or an extra HTTP Request.

At the moment though, working in this way is quite limited, mainly because of the type of requests that can be sent. Here is a forum post that I made a little while ago with regards to this. It may clarify how HMVC could be useful.

Bowen