Php Codeigniter模型只是实用类?
在我习惯的MVC中,模型类(通常)表示表,这些类的对象是行/域对象。我不明白为什么CodeIgniter中的模型类看起来只是单例实用程序类。写起来感觉不对Php Codeigniter模型只是实用类?,php,model-view-controller,codeigniter,model,Php,Model View Controller,Codeigniter,Model,在我习惯的MVC中,模型类(通常)表示表,这些类的对象是行/域对象。我不明白为什么CodeIgniter中的模型类看起来只是单例实用程序类。写起来感觉不对 $data = array('text' => 'hello'); $this->commentModel->insert($data); 而不是 $comment = new Comment(); $comment->text = 'hello'; $comment->save(); 有人能解释一下为什么C
$data = array('text' => 'hello');
$this->commentModel->insert($data);
而不是
$comment = new Comment();
$comment->text = 'hello';
$comment->save();
有人能解释一下为什么CodeIgniter这样做,让我感觉更好吗?(或者告诉我我能做些什么来修复它。)CodeIgniter不包括ORM 我建议查看可轻松与CI整合的at原则:
您可以查看我关于如何将条令(ORM)与Codeigniter一起使用的文章 第1部分,共11部分:
CodeIgniter中的模型是使用单例模式设计的,你是对的。虽然这对许多习惯于使用PHP OOP方法的人来说似乎很困惑,但有几个原因 第一个最简单的是你可以 只加载一次模型,并将其保存 可在super global中使用 在整个系统中 这是这里唯一真正的优点,其余的都是抱歉的解释 CI是在2006年用PHP4构建的 支持是主要优先事项 这只是刚刚开始改变,Ellisab已经从CI 2.0中放弃了对PHP4的支持,但就目前而言,框架就是这样工作的 当然,您可以加载一个模型,然后为您的模型使用您喜欢的任何PHP5语法 $this->load->model('comment') $comment=新注释(); $comment->text='hello'; $comment->save()
我不知道他们为什么一开始就这样设计,但是你可以通过使用Datamapper ORM()实现你想要的,它是专为Codeigniter构建的最流行的ORM。@bobo嘿,如果你想回答我,我会接受它。其他答案很有帮助,但我最终选择了Datamapper。谢谢