库中的Codeigniter-HMVC get_instance()不返回预期结果

时间:2013-05-08 05:21:00

标签: php codeigniter codeigniter-2 hmvc

我有控制器:

  

应用/控制器/ bob.php

然后在我在控制器Bob.php中使用的库中,我有这段代码:

$CI =& get_instance();
echo get_class($CI);

所以我打开网址“domain.com/bob”,当没有安装HMVC时,我得到了正确的回声,这是

  • 鲍勃

我一安装HMVC,结果就是:

  • CI

基本上,这意味着我不能使用在Bob中声明的$ CI-> someVariableINeed,因为它在CI中不存在。请注意,$ CI-> load-> helper(),$ CI-> load-> view(),..都可以正常工作。我试过了:

class Bob extends CI_Controller

class Bob extends MX_Controller

但它仍然无效。我一直在寻找24小时并没有找到任何东西,希望有人知道这一点。我知道这不是一种非常干净的方式来访问类的成员,但是这个问题是现有项目的简化,有数十万行代码,所以我无法改变这个,库HAS来访问这些成员变量至少我改变整个项目。

1 个答案:

答案 0 :(得分:1)

哦,是的!!我是男人,我修好了!考虑可能创建我自己的“get_instance()系统,这就是我所做的:

class MY_Controller extends MX_Controller
{
    public static $instance;
    function __construct()
    {
        self::$instance || self::$instance =& $this;
        ...
    }
}

然后在图书馆,帮助者或任何时髦的地方你需要使用它:

$CI =& MY_Controller::$instance;

请注意,如果您自动加载库,MY_Controller :: $ instance将无法正常工作,如果它位于库的__construct()中,因为MY_Controller尚未定义