Загрузите библиотеку в модель в 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 вызывается из конструктора
Ответы
Ответ 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";
затем сделайте свой объект, если вам нужно.