【发布时间】:2015-09-13 00:14:37
【问题描述】:
最近,我刚加入一家公司。他们使用 CodeIgniter PHP,在模型函数内部,只允许查询数据库。不允许循环和其他用法这样做。
这与我所知道的不同。 应该这样吗?
【问题讨论】:
标签: php codeigniter model-view-controller model
最近,我刚加入一家公司。他们使用 CodeIgniter PHP,在模型函数内部,只允许查询数据库。不允许循环和其他用法这样做。
这与我所知道的不同。 应该这样吗?
【问题讨论】:
标签: php codeigniter model-view-controller model
是的,不是的,模型的主要作用是将数据库层抽象到框架中,所以理论上来说,你只会使用模型来查询数据库(带有活动记录类或原生 SQL)并将结果返回给控制器,但在模型中看到这样的代码并不罕见
<?php
//birds_model.php (Array of Strings)
class Birds_model extends CI_Model{
function get_bird($q){
$this->db->select('bird');
$this->db->like('bird', $q);
$query = $this->db->get('birds');
if($query->num_rows > 0){
foreach ($query->result_array() as $row){
$row_set[] = htmlentities(stripslashes($row['bird'])); //build an array
}
echo json_encode($row_set); //format the array into json data for the ajax call
}
}
}
代码参考:jquery-ui-autocomplete-in-codeigniter-with-database
话虽如此,CodeIgniter 对 MVC 也有一种相当松散的方法,因为不需要模型。
如果您不需要额外的分离,或者发现维护模型需要比您想要的更多的复杂性,您可以忽略它们并使用控制器和视图构建您的应用程序。
CodeIgniter 还使您能够合并自己的现有脚本,甚至为系统开发核心库,使您能够以对您最有意义的方式工作。
我希望能帮助你理解codeigniter背后的逻辑并且你会习惯它,并且只是为了让你知道例如opencart正在使用一个非常相似的MVC框架,所以学习codeigniter对于扩展你的MVC开发人员来说真的很好技能。
干杯!
【讨论】: