2010-12-16 60 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();

相关问题