CodeIgniterでMODULEとして機能を分散させる
少し久しぶりの投稿になりました。
OSC名古屋への出展とセミナーでバタバタしているのと、MyNETSの現行バージョン1.2.0の正式版リリースに向けていろいろと。。
MyNETS2に向けてのCodeIgniterを使うということでいろいろ試行錯誤しているんですが、
moduleとして機能を分散させる手法が見つかりました。
CodeIgniter本家のフォーラム、WIKIなどで紹介されているということで、早速テスト。
ディレクトリ構成は次のようになります。
標準のパターン
root +system +application +controllers +hogehoge.php
これが、
root +system +application +modules +モジュール名 +controllers +hogehoge.php +views +models
とかになります。
つまり、機能をmodule単位で管理できるようになるということですね。
これが実現できなくてlibraryを階層構造にして管理しやすくする方法をカスタマイズしたのですが、
これを取り入れればすんなりやりたいことが実現できそう。
Matchbox
http://codeigniter.com/forums/viewthread/65749/
http://matchbox.googlecode.com/
これ、ちょっと動作検証してるんですが、一部おかしい?と思われる場所があります。
モジュールで認識するものとして、
コントローラ
モデル
VIEW
スクリプト
プラグイン
ライブラリ
ランゲージ
とありますが、
なぜかランゲージの部分がうまく動かない。
$this->load->module_language(モジュール名,言語ファイル名)
とすると正常に動くのですが、
$this->load->language(言語ファイル名)としたら動かない。
本来、モジュール名を自動で認識して探すはずなのですが、これがうまく動いていない模様。
$this->lang->load
でも同じでした。
英語の文章しかなく、理解していないのかなんなのかわかりませんが、ソース見る限り今のところおかしなところはなさそうなので、
正常に動作しないというだけなのかな。。
現在更新が止まっているようなので、こちらでメンテナンスしないとだめみたいです。
ただ、動かす分には問題がないので、これをうまく活用していきたいなと考えています。
==使い方==
マッチボックスのファイルをDLし、CodeIgniterのディレクトリに上書きするだけでOK
※作成当時のCIのバージョンが古いようなので、テストされることをお勧めします。