我创建了这个库:
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调用它)...我该怎么办?当这个库代码在任何控制器中时,它工作得很好,问题出在自定义库的任何地方。
答案 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变量中,然后在您想要访问其方法等时使用它。