Codeigniter-HMVC中的get_instance()没有返回预期的结果


Codeigniter-HMVC get_instance() in library does not return expected result

我有Controller:

应用程序/控制器/bob.php

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

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

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

    鲍勃

一旦我安装HMVC,结果是:

    CI

基本上,这意味着我不能使用在Bob中声明的$CI->someVariableINeed,因为它不存在于CI中。注意,CI ->加载->辅助(),CI ->加载视图-> (),. .但是都在工作。我试着:

class Bob extends CI_Controller

class Bob extends MX_Controller

但它仍然不起作用。我已经搜索了24小时,没有找到任何东西,希望有人知道这一点。我明白,这不是一个非常干净的方式来访问类的成员,但这个问题是一个现有项目的简化与数十万行代码,所以我不能改变这一点,库必须访问这些成员变量至少我改变整个项目。

哦!!我是男人,我修好了!考虑过创建我自己的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还没有定义