[Codeigniter-users] HMVCを実現するライブラリ

Back to archive index

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




Codeigniter-users メーリングリストの案内
Back to archive index