Codeigniter模型只是实用程序类?

时间:2010-12-16 16:34:12

标签: php model-view-controller codeigniter model

在我习惯的MVC中,模型类(通常)表示表,这些类的对象是行/域对象。我在CodeIgniter中不明白为什么模型类看起来只是单例实用程序类。写作感觉不对

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

而不是

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

有人可以解释为什么CodeIgniter以这种方式进行模拟并让我感觉更好吗? (或者告诉我我能做些什么来解决它。)

3 个答案:

答案 0 :(得分:4)

CodeIgniter中的模型是使用单身模式设计的。虽然这对许多习惯使用更多PHP OOP方法的人来说似乎有些困惑,但有几个原因。

  

第一个最简单的就是你可以   只加载一次模型并拥有它   可在超全球范围内使用   整个系统。

这是唯一真正的优点,其余的都是抱歉的解释。

  

CI建于2006年,PHP 4   支持作为主要优先事项。

现在只是刚刚开始改变,EllisLab已经从CI 2.0中删除了PHP 4支持,但是现在,这就是框架的工作方式。

您当然可以加载模型,然后使用您喜欢的任何PHP 5语法模型。

  

$这 - >负载>模型( '注释');

     

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

答案 1 :(得分:3)

CodeIgniter不包含ORM。

我建议在Doctrine上看到可以轻松地与CI集成: http://codeigniter.com/wiki/Using_Doctrine_with_Code_Igniter/

答案 2 :(得分:1)

您可以查看我的文章,了解如何使用Codeigniter使用Doctrine(ORM)。

第1部分: http://www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup