我有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还没有定义