2010-02-22 34 views
12

我使用的PHP框架(Kohana)最近實現了HMVC體系結構。我已經讀過,它是一個分層的mvc,其中請求是相互重疊的。它有點像ajax,只是純粹的服務器端。我已經在一些實驗中應用了它,但是我不能將它應用到我的任何項目中(因爲我找不到它)。你曾經在項目中使用過HMVC嗎?它對你有什麼幫助?什麼可以使用HMVC體系結構?

+1

+1,我最近從Code Igniter轉到Kohana,想知道同樣的事情。 – 2010-02-22 03:44:39

回答

14

這是一個有點像阿賈克斯,只是純粹的服務器-側。

這是一個很好的比喻。

HMVC很適合將小部件添加到頁面 - 模塊化內容部分,您可以在幾頁上重複使用。例如,購物車小部件。你可以用不同的方式做同樣的事情:

  1. 一個庫。我們習慣於將可重用代碼從控制器移動到庫中。然後,從控制器中,您可以將對該庫的調用結果加載到視圖變量中。
  2. 一個視圖。您可以從主視圖中加載視圖(部分)。該觀點部分可能會從模型中獲取內容。從視圖調用模型並不總是受歡迎,但並不一定是錯誤的。

同時,Kohana HMVC有幾個優點:

  1. 一致性 - HMVC請求被視爲與外部的http請求。
  2. 電源 - HMVC請求與包含路由的http請求具有相同的Kohana資源。
  3. 可插拔性 - 從視圖中調用時,HMVC請求在控制器(將庫結果分配給視圖)和視圖佔位符之間沒有耦合。你只觸摸一個文件而不是兩個文件。

我開始欣賞HMVC和具有http請求的可伸縮性,由Kiall鏈接。 CURL也可以做同樣的事情。然而,從一開始就設計Kohana HMVC比CURL更自然。

+0

上面的文章鏈接是好的,但是這提供了一個簡短但簡明的答案。謝謝! – yretuta 2010-02-25 01:28:34

8

好的 - Sam de Freyssinet(aka samsoir),Kohana開發者之一,最近發表了一篇關於這個問題的文章。

http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

雖然它不是HMVC的唯一用途 - 這是它的比較流行的應用之一。本文主要關注可擴展性(如每秒請求數),但代碼可擴展性(如代碼維護簡單/難易)可通過相同想法「解決」。

希望這有助於:)

(附註 - 他的代碼示例基於山姆的個人變化的Kohana - 見註釋在文章的末尾)

+1

我其實剛剛注意到URL中的日期是今天..好的時機:) – Kiall 2010-02-22 23:36:38

2

在一個簡單的項目中,您甚至可能找不到HMVC體系結構模式的實際用途。你甚至不應該嘗試。這是爲什麼:創建一個HMVC體系結構的關鍵在於使MVC變得更乾燥一點。 HMVC的主要好處之一是代碼重用。它可以讓你的碎片在整個應用程序中重複(有時在同一個地方,其他時間 - 不)。

如果您正在編寫小型測試應用程序,那麼不會有任何可重複的片段。因此,不需要使用完整的HMVC潛力。你最終只能得到1級HMVC,這是你的標準MVC。

Here you can read the original publication, which introduced HMVC. 2000年。