Подтвердить что ты не робот

Загрузите библиотеку в модель в CodeIgniter

Почему моя модель не загружает библиотеку шифрования?

class User_model extends Model {

  function User_model() {
    parent::Model();
    $this->check_login();
  }

  function check_login() {
    $this->load->library('encrypt');
    $email = $this->encrypt->decode($email);
    ....
  }
}

Это дает мне ошибку PHP: вызов функции-члена decode() для не-объекта в строке X - где X - декодирование $this- > encrypt- > ($ email); линия?

Отредактировано, чтобы показать, что проблема заключалась в том, что check_login вызывается из конструктора

4b9b3361

Ответ 1

Я вызывал check_login из конструктора, и это вызывало проблемы.

Решение состоит в вызове $this->_assign_libraries(); сразу после загрузки библиотеки в конструктор.

Благодаря этой теме форума codeignitor: http://codeigniter.com/forums/viewthread/145537/

Ответ 2

Вам не нужно загружать библиотеку в МОДЕЛЬ, МОДЕЛИ всегда вызывается из CONTROLLERS, поэтому вам просто нужно загрузить библиотеки в контроллере, и функции будут доступны в моделях, вызванных от него!

С уважением,
Педро

Ответ 3

Библиотеки должны автоматически присваиваться экземпляру модели, чтобы он работал нормально.

Помните, что если вы не можете получить доступ к супер-глобальному, вы всегда можете использовать $ci = & get_instance(), чтобы захватить его без дополнительных затрат на вашу память.

Но все же... ваш пример кода должен работать > . <

Ответ 4

Я пробовал много из них, но в конце концов, я сделал это в модели:

$this->load->library('mylib');
$mylib= new Mylib();
$mylib->somemethod();

Это работает для меня.

Ответ 5

вы можете изменить имя объекта для загружаемой библиотеки beacause У CI также есть класс шифрования

просто

$this->load->library('encrypt',NULL,'myencryptobj');
$this->myencryptobj->yourfunction();

Надеюсь, что это поможет

Ответ 6

i также столкнулся с проблемой в facebook api, после чего я попробовал require_once lib файл facebook в модели. это сработало для меня.

require_once "application/libraries/facebook.php"; затем сделайте свой объект, если вам нужно.