在Codeigniter上创建库时出错

时间:2011-09-28 22:24:47

标签: php codeigniter

我创建了这个库:

class Header 
{

    function __construct()
    {
        $this->user();
    }

    function user()
    {
        $my_user = $this->session->userdata('my_user'); // True or False

        if($my_user)
        {
            echo 'user!';
        }
    }

}

/* End of file Header.php */

我在任何控制器中调用它:

public function __construct()
    {
        parent::__construct();
        $this->load->library('Header');
    }

错误:

  

致命错误:在非对象中调用成员函数userdata()   **   在第11行

我不知道是什么问题,我确信调用了库会话(我从autoload调用它)...我该怎么办?当这个库代码在任何控制器中时,它工作得很好,问题出在自定义库的任何地方。

2 个答案:

答案 0 :(得分:1)

这不适用于图书馆,请参阅documentation

$CI =& get_instance();
$CI->load->library('session');

$my_user = $CI->session->userdata('my_user');

答案 1 :(得分:1)

您遇到的问题是,在库中,CI对象(this)未加载,您需要获取它。

所以试试这个(CI对象的引用存储在$ CI变量中):

class Header 
{
    private $CI;
    function __construct()
    {
        $this->user();
        if (!isset($this->CI))
    $this->CI =& get_instance();
    }

    function user()
    {
        $my_user = $this->CI->session->userdata('my_user'); // True or False

        if($my_user)
        {
            echo 'user!';
        }
    }

}

在构造函数中,您获得对CI对象的引用,并将其存储在$ CI变量中,然后在您想要访问其方法等时使用它。