为什么我的模型不会加载加密库?
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错误:在第X行的非对象上调用成员函数decode() - 其中X是$ this-> encrypt-> decode($ email);线?
编辑以表明问题是从构造函数调用了check_login
答案 0 :(得分:22)
您不需要在MODEL中加载库,总是从CONTROLLERS调用MODELS,因此您只需要在Controller中加载库,这些函数将在他调用的模型中可用!
的问候,
佩德罗
答案 1 :(得分:5)
我在构造函数中调用了check_login,这导致了问题。
解决方案是在构造函数中加载库后立即调用$this->_assign_libraries();
。
感谢这个codeignitor论坛帖子: http://codeigniter.com/forums/viewthread/145537/
答案 2 :(得分:5)
应该自动将库分配给Model实例,以便它可以正常工作。
请记住,如果您无法访问超级全局,您可以随时使用$ ci =& get_instance()抓住它,无需额外花费你的记忆。
但是......你的代码示例应该可以工作>。<
答案 3 :(得分:2)
我尝试了很多,但最后,我在模型中做了这个:
$this->load->library('mylib');
$mylib= new Mylib();
$mylib->somemethod();
这适合我。
答案 4 :(得分:0)
您可能想要更改要加载的库的对象名称 因为CI也有加密类
只是做
$this->load->library('encrypt',NULL,'myencryptobj');
$this->myencryptobj->yourfunction();
希望这有帮助
答案 5 :(得分:0)
我还面临关于facebook api的问题,然后我在模型中尝试了required_once facebook的lib文件。它对我有用。
require_once“application / libraries / facebook.php”; 然后在需要时制作它的对象。