Php 无法访问钩子-代码iginitor中的用户数据

Php 无法访问钩子-代码iginitor中的用户数据,php,codeigniter-2,Php,Codeigniter 2,这是我的hooks.php $hook['pre_controller'] = array( 'class' => 'UpdateSession', 'function' => 'index', 'filename' => 'UpdateSession.php',

这是我的hooks.php

$hook['pre_controller'] = array(
                            'class'    => 'UpdateSession',
                            'function' => 'index',
                            'filename' => 'UpdateSession.php',
                            'filepath' => 'hooks',
                            'params'   => array()
                            );
这是我的UpdateSession.php,放在hooks文件夹中

<?php

class UpdateSession extends CI_Controller
{
public function __construct()
{
    $this->CI =& get_instance();
    $this->CI->load->library("session");
}

public function index()
{
    if($this->CI->session->userdata('user_id')) 
    {
        $query =  $this->CI->db->get_where('cp_sessions', array('user_id' => $this->CI->session->userdata('user_id')));
        $session_info = $query->row_array();

        if($session_info['session_id'] !=    $this->CI->session->userdata('user_id'))
        {
            $new_session_id = array('session_id' => $this->CI->session->userdata('user_id'));
            $this->db->update('cp_sessions', $new_session_id, array('user_id' => $this->CI->session->userdata('user_id')));
        }
    }
}
}

我试图删除extends
CI\u Controller
,但也存在同样的问题。

如果使用pre-Controller钩子,则表示在加载控制器之前调用类。因此,您无法在此钩子中获取CI实例,因为CI尚未加载

在某些钩子中无法获取CI实例:

  • 不能:前置系统,前置控制器
  • CAN:post\U控制器\U构造函数、post\U控制器、显示\U覆盖、缓存\U覆盖、post\U系统
您可以使用My_控制器并从中扩展控制器。在My_controller构造函数中添加功能。(作为解决办法的建议)

Fatal error: Call to a member function library() on a non-object in
C:\xampp\htdocs\website\pokeradda\application\hooks\UpdateSession.php on line 8