質問
Kohana のドキュメントを読むと、バージョン 3.0 の主な違いは、バージョン 2.x のような MVC ではなく HMVC パターンに従っていることであることがわかりました。Kohana のドキュメントのこれに関するページと wikipedia のページでは、明確なアイデアが得られませんでした。
そこで質問:HMVC パターンとは何ですか? MVC との違いは何ですか?
解決
Sam de Freyssinet (Kohana 開発者の 1 人) は、次のように書きました。 HMVC に関する詳細な記事, 、それが何なのか、そしてどのように使用できるのか。
リンクが切れています:新しいリンク - https://web.archive.org/web/20160214073806/http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
他のヒント
私は現在、開発のプロセスでは、自分のPHP5.3HMVC枠組みとして 合金.以来、私は大きく投資し、販売HMVCだろうと思ったら、提供し、異なる視点、そのようHMVC使用の特典です。
最大の実践的利用HMVC建築の"widgetization"コンテンツの構造物です。一例が、格付は、TwitterやブログRSSフィードの表示やディスプレイのセッティングをのショッピングカートコンテンツeコマースサイト。その本質はコンテンツを表示する複数ページであっても異なる場所によっては、コンテキストのメインのHTTPます。
伝統的なMVCの枠組みが一般的な直接の回答のためにこれらの種類のコンテンツの構造で、一般の人が後を複製、切り替えレイアウトをカスタムヘルパーを自分のウィジェット構造やライブラリファイル、または引張関係のないデータからの要求コントローラー押しを通じめとデニースザメネースパークを描画するのに一部となります。これらの特に良いオプション、責任のレンダリング特定のコンテンツの一部または負荷に必要なデータを見て、最終的に漏れな複数の領域と重複する場所に使われているそうです。
HMVC、具体的には能力の派遣サブ要求コントローラに取り扱いに責任の明らかな解決策です。考えてみれば何をやっているかのコントローラー構造です。必要な負荷の一部のデータのコメントを表示してHTML形式です。な要求を送信するコメント-コントローラがあparams,との相互作用によってモデルをピックを表示するためのビューのビューが表示されます。唯一の違いはんのコメントを表示すインライン、以下のブログ記事はユーザーが閲覧中のページの代わりに完全に独立した完全コメントのページをもとHMVCアプローチできると内部及び外部からの要求と同じコントローラ"だけ石"と言).この点、HMVCん自然の副産を増加のコードモジュール性、再利用、維持により分離の最大の関心事です。この販売のHMVC.
なのでリスペクトしながら、 サムデFreyssinetのTechPortal第 スケールとHMVCは興味深い考えではないが90%+の利用者のHMVCの枠組みを取得し、実用的な日常からです。
HMVCは密接にディスパッチする「コンポーネントベース」アプローチに関連しています。基本的に、代わりにコントローラに単一のディスパッチャ、デリゲートを有すると、各コントローラは、ディスパッチャそれ自己として作用することができます。これは、あなたのコントローラの階層を提供します。デザインは、より柔軟性があり、コードのより良いカプセル化の原因となるが、より高い抽象化の価格で。 Konstrukt にこのパターンを中心に設計されています。
また、この回答を参照してください。 https://stackoverflow.com/questions/115629/最も単純な-PHP-ルーティングフレームワーク/ 120411#120411 の
はKohanaのでは、少なくとも、HMVC要求は、「内部」サービスされたHTTPリクエストです:代わりに、ネットワーク上で発行されるので、それは、ルーティングされた派遣やフレームワーク自体によって処理されます。 「HMVC」と「MVC」は、それが実際にはない用語間の基になる接続を示唆することで混乱している名前の類似性が存在する:1は、他のマイナーなバリエーションや変更はありませんが、彼らは全く異なるものです。 (HMVCでも、クライアント側のHTTPリクエストせずにAjaxのように説明されています。)「HMVC」のためのKohanaの重視、およびサポートフレームワークはHTTPベースのサービス指向アーキテクチャーのための強力なサポートを持っていることを意味します。
このアーキテクチャのパターンの利点は、同じ「呼び出し規約は」内部および外部の要求のために使用されているので、必要に応じて、それは「内部」のサービス要求への「外部」要求、またはその逆に変換するために些細なことです。
これは、自身の名前が(Symfony2のは、同じ概念を説明し、不要と思われるそれを与え、賢明な建築のパターンであるが、「<のhref =」http://symfony.com/doc/current/book/controller.html#forwarding」 rel =「nofollowをnoreferrer」>サブ要求は)」を、実際に名前が誤った名称のようです。そこには、特定の要件はませんか要求がすべての不可欠の標準コールグラフ以外の階層を(形成していることが必要ですプログラム);リクエストは簡単に、たとえば、再帰的な可能性があります。
[を更新2011年4月、2012年3月:のコメントへの応答で答えに拡大]
HMVCは階層モデルビューController.Inは通常のMVCにあるすべてのGUIオブジェクトはそのMVC.ButがHMVCとは異なり、親GUIオブジェクトと子GUIオブジェクトの間にはどんな関係があるんです。 HMVCでは、各GUIオブジェクトは、その子オブジェクトへのアクセス権を持ち、子オブジェクトのそれぞれは、その親オブジェクトにアクセスすることができます。
すべてのビュー中のSOそれはそれを親ビューにアクセスすることができ、親view.Throughがあります。 以下のためのすべてのコントローラでは、親コントローラにイベントを通過可能な親コントローラが存在する(イベントがその範囲にない場合。)
の詳細についてはをクリックしてください。ここを
新しいリンクはこのアドレスの
であります