Takeshi Amano
p****@takes*****
2008年 8月 11日 (月) 15:12:33 JST
天野です 先日HMVCを実装するライブラリの調査をしたのでシェアします。 HMVCとはMVCモデルをモジュール化してその中だけで独立して MVCの実装を行うことで、他のモジュールとの切り分けを実現する ことです。 こうすることで1つのapplicationディレクトリ以下にモジュールで切った 独立したアプリ群を管理できるようになります。 CIの場合は以下のような実装が可能になります。 1. application/modules を作成 2. モジュール名毎にディレクトリを作成 application/modules/blog application/modules/admin 3. 各モジュールディレクトリ内でのMVCの実装 application/modules/blog/controllers application/modules/blog/models application/modules/blog/views 4. モジュール名の前にコントローラ名を付けてコントローラを呼び出す 例) http://localhost/blog/post/add... http://localhost/(モジュール名)/(コントローラ名)/(関数名)... CIのフォーラムなどを探していると以下の2つのライブラリのどちらかで 実現できました。 Modular Extensions http://codeigniter.com/wiki/Modular_Extensions_-_HMVC Matchbox http://codeigniter.com/forums/viewthread/65749/ http://matchbox.googlecode.com/ どちらのライブラリもapplication/libraryにライブラリを置いて実装している ので、特にコアファイルをいじる必要などはありません。 簡単に各ライブラリのメリット・デメリットなど Modular Extensions メリット - リリースが頻繁 - 他のモジュールのコントローラ内の関数が呼べる デメリット - なぜかモデルのクラス名を小文字にする必要があった (CIのコード規則に あるSample_modelみたいなクラス名ではだめのよう) Matchbox メリット - 既存のモデルのクラス名の変更をしなくてもモジュールディレクトリに 置くだけで動いてくれた - MVCだけでなくlibrariesなども各モジュール下で持てる デメリット - ここ数ヶ月ソースの更新が無い 天野はクラス名の変更の必要がないmatchboxを使うことにしました。 Takeshi Amano Ads are the cave art of the twentieth century - Marshall McLuhan