Kohana 3.2 は、HMVC デザイン パターンをサポートするように設計されました。HMVC パターンは、ネストされた MVC トライアドで構成されます。しかし、私が知る限り、Kohana のカスケード ファイル システムでは、すべてのモデルとコントローラーを最上位の「classes」ディレクトリに配置し、ビューを最上位の「views」ディレクトリに配置する必要があります。このようにモデル/コントローラーがファイル システムのトップ レベルでビューから分離されている場合、ネストされた MVC トライアドをどのように実装すればよいのでしょうか?
2 に答える
ビューの処理方法をハックするかどうかはわかりませんが、関数が必要なディレクトリを受け入れるようにKohana_View
クラスを拡張できます。set_filename()
コントローラー/モデルに似た自動読み込み機能が必要な場合は、自分で実装できます。
例(未テスト):
public function set_filename($view)
{
// Transform the class name into a path
$file = str_replace('_', '/', strtolower($view));
if ($path = Kohana::find_file('classes', $file))
{
// Store the file path locally
$this->_file = $path;
return $this;
}
throw new View_Exception('The requested view :view could not be found', array(
':view' => $view,
));
}
しかし、私が知る限り、Kohana のカスケード ファイル システムでは、すべてのモデルとコントローラーを最上位の「classes」ディレクトリに配置し、ビューを最上位の「views」ディレクトリに配置する必要があります。
あなたが望むのは、Kohana 2、codeigniter、およびコントローラー、モデル、およびビュー専用のフォルダーを持つ他のフレームワークのようなフォルダー構造です。Kohana 3 には、クラス専用のフォルダーがあります。Kohana 3 の構築方法では、コントローラーに Controller_ プレフィックスを付ける必要があります。Kohana 3 オートローダーは、classes/controller フォルダーで Controller_ プレフィックスを持つクラスを探します。
次に、Kohana 3 には非常に基本的な Model クラスと View クラスも付属しています。私の知る限り、Kohana 3 コアは Model クラスを使用しておらず、View クラスを使用するのはごくわずかです。ただし、モデルに Model_ プレフィックスを付ける規則は Model::factory() にありますが、強制されていません。それらを使用する必要はありません。
View クラスは、de ビュー フォルダーでテンプレートを探します。(Zombor では推奨されていません) Zombor (開発者の 1 人) による View_Module もたまたまそこに見えます。(Zombor によって推奨されている) KOstacheモジュールは、Zombor によって再び、templates フォルダー内のテンプレートを探します。どちらのモジュールでも、View-Model クラスを作成できます。慣例では View_ プレフィックスを付けて、最終的にクラス/ビューになります。ただし、views フォルダーに入れ、その View-Model のパスをハードコードするすべてのテンプレートの View を拡張する View_ クラスを作成することを止めるものは何もありません。
クラス フォルダはクラス専用であることに注意してください。