HMVC
10 февраля 2011
В последнее время часто всплывает тема иерархического MVC или HMVC. Штука довольно интересная, но по-простому почти нигде не описана, что и исправим.
HMVC отличается от классического MVC лишь тем, что из любого контроллера, представления или компонента можно запустить действие другого контроллера.
Это довольно удобно для построения сайтов портального типа, где на одной странице показывается несколько независимых частей, и виджетов.
В большинстве реализаций, таких как HMVC в Kohana 3, CodeIgniter Modular Extensions, Zend Framework Action View Helper и runController в Yii, при этом, отдельного HTTP-запроса не происходит.
Kohana 3 также умеет запускать контроллеры по HTTP, хотя, кроме весьма неплохой интеграции с её роутингом, ничего нового тут нет: использовать CURL или сокеты для дополнительного запроса не сложно.
Комментарии RSS по email OK
Kohana v3.1 умеет делать подзапросы (в том числе и внешние) также через CURL и PECL_HTTP :)
PS.
Не исправили :) Вроде бы на Хабре недавно был перевод статьи про HMVC в ko3
Оперативно )
Sam Dark, большая просьба. Не мог бы написать статью, с примером реализации такой схемы на Yii. Хотелось бы посмотреть как это делается правильно и избавить себя от говнокода. Спасибо.
biakaveron, я упомянул про Kohana 3 и вызов действий контроллера по HTTP. Что-то забыл?
В статье ( http://habrahabr.ru/blogs/kohanaphp/113117/ ) вроде та же самая мысль, что и у меня, но описано подлиннее и с применением именно к Kohana.
Diolektor, при использовании Yii особого смысла в HMVC нет: есть виджеты.
Sam, Diolector А еще есть модули.
Мне в свое время вот эта статья помогла нормально разобраться с HMVC: techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
Вот, блин, на Хабре перевод этой же статьи оказывается ..
В cakePHP это реализуется методом requestaction, только не в курсе происходит ли при этом HTTP-запрос.
Не понравилось в кохане то что эту вобщем-то старую фичу (уже года 3 как юзаю) распиарили как абсолютно новую вещь. И кстати в кохане нельзя в экшен передать что-то кроме строк. С учетом того что мы не привязаны к строке запроса, то как-бы могли бы сделать передачу всего что можно. (Опять-же 2 года как юзаю передачу массивов - например та-же менюшка, с подсвеченным текущим пунктом)
Да, сам уже использую HMVC. в некоторых проектах очень сильно облегчает жизнь
По поводу вашего куска кода:
куда его вставлять, а то ругается на константу.