在CodeIgniter中的模型中加载库

时间:2010-03-02 18:19:38

标签: 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错误:在第X行的非对象上调用成员函数decode() - 其中X是$ this-> encrypt-> decode($ email);线?

编辑以表明问题是从构造函数调用了check_login

6 个答案:

答案 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”; 然后在需要时制作它的对象。