2010-12-16 24 views
4

在我習慣的MVC中,模型類(通常)表示表和這些類的對象是行/域對象。我不明白在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/)實現您想要的功能,它是最受歡迎的ORM爲Codeigniter打造。 – bobo 2010-12-16 16:45:20

+0

@bobo嘿,如果你想做出答案,我會接受它。其他答案是有幫助的,但我最終用Datamapper去了。謝謝。 – takteek 2010-12-21 21:32:54

回答

4

模型使用Singleton模式,你是對的設計。雖然這似乎讓很多習慣於使用更多PHP OOP方法的人感到困惑,但有幾個原因。

第一個最簡單的就是可以 負荷模型只是一次,有它 在超級全局使用 在整個系統中可用。

這是唯一的真正的加在這裏,其餘的是歉意的解釋。

CI建於2006年,PHP 4 支持作爲主要優先事項。

這只是剛剛開始改變EllisLab已經從CI 2.0中減少了PHP 4的支持,但現在,這就是框架的工作原理。

您當然可以加載模型,然後使用您喜歡的任何PHP 5語法爲您的模型。

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

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

相關問題