Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter模型只是实用类?_Php_Model View Controller_Codeigniter_Model - Fatal编程技术网

Php 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

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

$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。谢谢