为什么ion auth库使用自定义where()而不是使用native提供的where()CI

时间:2016-10-13 20:06:06

标签: php codeigniter authentication ion-auth

    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私有属性对工作流做了什么好事?我在这里错过了一些部分,还是有一些设计模式?

1 个答案:

答案 0 :(得分:0)

在我看来,主要原因是实现事件挂钩功能。所有“重复”数据库函数都会调用$this->trigger_events(),后者又调用提供给set_hook()的任何函数。

我有一种非常模糊的回忆,注意到其他一些正当理由。但那已经很久了,我不记得它是什么了。