Для чего я могу использовать архитектуру HMVC?
Вопрос
PHP-фреймворк, который я использую (Kohana), недавно реализовал архитектуру HMVC.Я читал, что это многоуровневый mvc, где запросы выполняются друг над другом.Это немного похоже на ajax, только чисто на стороне сервера.Я немного применил это в некоторых экспериментах, но я не могу применить это ни к одному из моих проектов (потому что я не могу найти в этом необходимости).Вы когда-нибудь раньше использовали HMVC в проекте?Как это помогло вам?
Решение
Это немного похоже на ajax, только чисто на стороне сервера.
Это хорошая аналогия.
HMVC хорош для добавления виджетов на страницы - модульных фрагментов контента, которые вы будете повторно использовать на нескольких страницах.Например, виджет корзины покупок.Вы могли бы сделать одно и то же по-разному:
- Библиотека.Мы привыкли переносить повторно используемый код из контроллера в библиотеку.Затем из контроллера вы могли бы загрузить результаты вызова этой библиотеки в переменную представления.
- Вид.Вы могли бы загрузить представление (частичное) из основного представления.Это частичное представление могло бы извлекать содержимое из моделей.Вызов моделей из представлений не всегда популярен, но это не обязательно неправильно.
Однако у Kohana HMVC есть несколько преимуществ:
- Согласованность - запросы HMVC обрабатываются так же, как и внешние http-запросы.
- Запросы Power - HMVC имеют те же ресурсы Kohana, что и http-запросы, включая маршруты.
- Возможность подключения - При вызове из представления запрос HMVC не имеет связи между контроллером (который присваивает результаты библиотеки представлению) и заполнителем представления.Вы касаетесь только одного файла, а не двух.
Я начинаю ценить аргументы в пользу HMVC и масштабируемости с помощью http-запросов, на которые ссылается Kiall.То же самое можно было бы сделать с CURL.Однако, возможно, было бы более естественным с самого начала разрабатывать с помощью Kohana HMVC, чем CURL.
Другие советы
Что ж, Сэм де Фрейссине (он же самсуар), один из разработчиков Kohana, недавно опубликовал статью, посвященную этому вопросу.
http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
Хотя это не единственное применение HMVC - это одно из его наиболее популярных применений.Статья в основном посвящена масштабируемости (например, количеству запросов в секунду), но масштабируемость кода (например, насколько легко / сложно поддерживать код) может быть "решена" с помощью тех же идей..
Надеюсь, это поможет :)
(Примечание - его примеры кода основаны на личных изменениях Сэма в Kohana - см. Примечание в конце статьи)
В простом проекте вы можете даже не найти реального применения архитектурному шаблону HMVC.И тебе не стоит даже пытаться.Вот почему :
Весь смысл в создании архитектуры HMVC состоял в том, чтобы сделать MVC немного суше.Одним из главных преимуществ HMVC является повторное использование кода.Это позволяет вам создавать фрагменты, которые повторяются по всему вашему приложению (иногда в одном и том же месте, в других случаях - нет ).
Если вы пишете как небольшое тестовое приложение, в нем не будет никаких повторяющихся фрагментов.Таким образом, нет необходимости использовать весь потенциал HMVC.В итоге вы просто получаете 1 уровень HMVC, который является вашим стандартным MVC.
Здесь вы можете прочитать оригинальную публикацию, в которой был представлен HMVC. В 2000-м году.