在我习惯的MVC中,模型类(通常)表示表,这些类的对象是行/域对象。我在CodeIgniter中不明白为什么模型类看起来只是单例实用程序类。写作感觉不对
$data = array('text' => 'hello');
$this->commentModel->insert($data);
而不是
$comment = new Comment();
$comment->text = 'hello';
$comment->save();
有人可以解释为什么CodeIgniter以这种方式进行模拟并让我感觉更好吗? (或者告诉我我能做些什么来解决它。)
答案 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