2010-12-16 7 views
4

私が慣れているMVCでは、モデルクラス(通常)はテーブルを表し、これらのクラスのオブジェクトは行/ドメインオブジェクトです。 CodeIgniterではなぜモデルクラスがシングルトンユーティリティクラスであるように見えるのか分かりません。それは、誰かがCodeIgniterのは、このようなモデルをした理由を説明し、私はそれについてよりよく感じることができCodeigniterモデルは単なるユーティリティクラスですか?

$data = array('text' => 'hello'); 
$this->commentModel->insert($data); 

代わり

$comment = new Comment(); 
$comment->text = 'hello'; 
$comment->save(); 

の誤書き込みを感じていますか? (またはそれを修正するために私ができることを教えてください)

+2

私はなぜ彼らが最初のようにデザインするのかはわかりませんが、あなたはDatamapper ORM(http://datamapper.exitecms.org/)を使ってあなたが望むものを達成することができます。 Codeigniterのために構築されています。 – bobo

+0

@boboねえ、もしあなたが答えたいなら、私はそれを受け入れるでしょう。他の回答は役に立ちましたが、私はDatamapperに行きました。ありがとう。 – takteek

答えて

4

モデルは、あなたが正しいシングルトンパターンを使用して設計されています。これはもっとPHP OOPのアプローチに取り組んでいる多くの人々にとって混乱しているようですが、いくつかの理由があります。

最初の最も簡単なあなたは 一度だけモデルをロードし、それシステム全体で使用 のためのスーパーグローバルで利用できる を持つことができるということ。あります

ここで唯一の本当のプラスですが、残りは謝罪的な説明です。

CIは、メインの優先順位としてPHP 4 サポート付きで、2006年に建設されました。

EllisLabはCI 2.0からPHP 4サポートを削除しましたが、今のところフレームワークの仕組みです。

もちろん、モデルをロードして、モデルに適したPHP 5構文を使用できます。

$ this-> load-> model( 'comment');

$コメント=新しいコメント(); $ comment-> text = 'hello'; $ comment-> save();

関連する問題