Codeigniter未加载CI超级对象

cri*_*erz 6 php codeigniter codeigniter-2

我正在尝试为我的Codeigniter应用程序编写一个钩子.

我想抓住session我的hook.

这是加载钩子的代码:

$hook['pre_controller'] = array(
  'function' => 'getNav',
  'filename' => 'LoadNav.php',
  'filepath' => 'hooks'
);
Run Code Online (Sandbox Code Playgroud)

这是我试图在钩子中加载的代码:

function getNav()
{
     $CI =& get_instance();
     $level = $CI->session->userdata('level');
}
Run Code Online (Sandbox Code Playgroud)

它不断抛出以下错误:

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: hooks/LoadNav.php
Line Number: 7
Run Code Online (Sandbox Code Playgroud)

我知道我做错了什么?似乎get_instance方法无法正常运行?

任何帮助将不胜感激,谢谢

阿兰

Ros*_*oss 9

您无法$CIpre_controller钩子中访问实例- 根据文档:

pre_controller hook在调用任何控制器之前立即调用.所有基类,路由和安全检查都已完成.

它是Controller允许访问的CI get_instance().在实例化控制器之前,没有什么可以得到的.

请尝试post_controller_constructor相反,看看是否能获得理想的结果.

system/Core/Controller.php:

class CI_Controller {

// <snip>

    public static function &get_instance()
    {
        return self::$instance;
    }

}
    // END Controller class
Run Code Online (Sandbox Code Playgroud)