public function groups()
{
$this->trigger_events('groups');
// run each where that was passed
if (isset($this->_ion_where) && !empty($this->_ion_where))
{
foreach ($this->_ion_where as $where)
{
$this->db->where($where);
}
$this->_ion_where = array();
}
if (isset($this->_ion_limit) && isset($this->_ion_offset))
{
$this->db->limit($this->_ion_limit, $this->_ion_offset);
$this->_ion_limit = NULL;
$this->_ion_offset = NULL;
}
else if (isset($this->_ion_limit))
{
$this->db->limit($this->_ion_limit);
$this->_ion_limit = NULL;
}
// set the order
if (isset($this->_ion_order_by) && isset($this->_ion_order))
{
$this->db->order_by($this->_ion_order_by, $this->_ion_order);
}
$this->response = $this->db->get($this->tables['groups']);
return $this;
}
对我来说这似乎是胡说八道,因为你可以从上面的groups()函数中看到,为什么使用自定义_ion_limit,_ion_offset,_ion_where当CI已经让你选择写原生where() - > limit() - > get(),保留自己的私有_ion_limit,_ion_offset,_ion_where私有属性对工作流做了什么好事?我在这里错过了一些部分,还是有一些设计模式?
答案 0 :(得分:0)
在我看来,主要原因是实现事件挂钩功能。所有“重复”数据库函数都会调用$this->trigger_events()
,后者又调用提供给set_hook()
的任何函数。
我有一种非常模糊的回忆,注意到其他一些正当理由。但那已经很久了,我不记得它是什么了。