Codeigniter未加载CI超级对象

时间:2011-04-20 15:27:02

标签: php codeigniter codeigniter-2

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

我试图抓住session中的hook

这是加载钩子的代码:

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

以下是我试图加载的代码:

function getNav()
{
     $CI =& get_instance();
     $level = $CI->session->userdata('level');
}

它不断抛出以下错误:

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: hooks/LoadNav.php
Line Number: 7

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

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

阿兰

1 个答案:

答案 0 :(得分:9)

根据文档,您无法访问$CI挂钩中的pre_controller个实例:

  

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

允许访问Controller的CI get_instance()。在实例化控制器之前, get 没有任何内容。

请尝试post_controller_constructor,看看是否能获得所需的结果。

system/Core/Controller.php

class CI_Controller {

// <snip>

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

}
    // END Controller class