Почему библиотека ion auth использует пользовательский where() вместо использования собственного CI, предоставленного where()

#php #codeigniter #authentication #ion-auth

#php #codeigniter #аутентификация #ion-auth

Вопрос:

     public function groups()
{
    $this->trigger_events('groups');

    // run each where that was passed
    if (isset($this->_ion_where) amp;amp; !empty($this->_ion_where))
    {
        foreach ($this->_ion_where as $where)
        {
            $this->db->where($where);
        }
        $this->_ion_where = array();
    }

    if (isset($this->_ion_limit) amp;amp; 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) amp;amp; 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:

Мне кажется, основная причина заключается в реализации функциональности перехвата событий. Все «дублирующие» функции БД выполняют вызов $this->trigger_events() , который, в свою очередь, вызывает любую функцию, предоставленную set_hook() .

У меня есть очень смутное воспоминание о том, что я замечал какую-то другую достойную причину. Но это было довольно давно, и я не могу вспомнить, что это было.

Комментарии:

1. Может быть, это правда, кажется, что будет более гибко сфабриковать предложение sql