Так, я думаю, что понимаю каскадную файловую систему в, он - основные условия, но я, может казаться, не переношу голову вокруг 'структуры H'ierachy MVC. Кто-либо мог сказать мне преимущества об использовании HMVC по MVC, и это - основная намеченная функциональность?
Спасибо за внимание!
HMVC лучше подходит для виджетов. Например, виджет календаря может иметь свой собственный контроллер, модели и набор представлений, и вы можете просто вызвать его контроллер для рендеринга определенного представления изнутри главной страницы, чтобы встроить виджет.
Акцент делается на многократно используемых элементах графического интерфейса. Дополнительную литературу см. здесь: http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html.
Редактировать: Вот актуальная ссылка, ориентированная на PHP: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/. Кажется, там есть и более симпатичные иллюстрации.
Вы можете сделать запрос к странице (контроллер и действие найдены маршрутами) внутренним. Это можно сделать, например, так:
class Controller_Menu extends Controller
{
public function action_index()
{
$this->request->response = view stuff ...
$this->request->response->set('...', ...) // some vars
}
}
и
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
);
}
}
Каждая страница, имеющая меню, не должна делать всю логику для загрузки меню и т.д. (например, из моделей). Вы просто делаете запрос к контроллеру, выполняете его и получаете результат. Очень полезно при правильном использовании.
Люди на форумах KO3 описывали способность HMVC как создание AJAX-запроса без дополнительного HTTP-запроса.
В реальном мире это возможно, если вы хотите построить систему, которая имеет API как неотъемлемую часть приложения. Например, Twitter. С помощью HMVC вы можете сначала написать API, а затем использовать его в приложении. Это сэкономит либо дублирование кода, либо дополнительный HTTP-запрос.
На данный момент, однако, работа таким образом довольно ограничена, в основном из-за типа запросов, которые могут быть отправлены. Вот сообщение на форуме, которое я сделал некоторое время назад по этому поводу. Оно может прояснить, как HMVC может быть полезен.