2013-05-08 88 views
0

我有控制器:库笨-HMVC get_instance()不返回预期的结果

应用/控制器/ bob.php

在我在控制器鲍勃使用库

然后.PHP,我有这样的代码:

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

于是我打开URL“domain.com/bob”,我得到的是没有安装HMVC当正确的回波,为

  • 鲍勃

当我安装HMVC,结果是:

  • CI

所以基本上,这意味着我不能用$ CI-> someVariableINeed那在Bob中被声明,因为它在CI中不存在。请注意,$ CI-> load-> helper(),$ CI-> load-> view(),..都可以工作。我想:

class Bob extends CI_Controller 

class Bob extends MX_Controller 

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

回答

1

哦,是的!我是男人,我修好了!想过也许创造了我的“自己” get_instance()系统,这是我做的:

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

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

$CI =& MY_Controller::$instance; 

注意,如果你自动加载一个库,如果它在库的__construct()中,MY_Controller :: $实例将不起作用,因为MY_Controller尚未定义。