在图书馆笨-HMVC get_instance()不返回预期的结果(Codeigniter-HMVC

2019-10-29 12:14发布

我有控制器:

应用/控制器/ bob.php

然后在我的控制器Bob.php使用图书馆,我有这样的代码:

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

于是我打开URL“domain.com/bob”,而我得到的时候没有安装HMVC,这是正确的回声

  • 短发

当我安装HMVC,结果是:

  • CI

所以基本上,这意味着我不能用$ CI-> someVariableINeed这是在鲍勃声明,因为它不存在的CI。 需要注意的是$ CI->负载>助手(),$ CI->负载>视图(),......都不过工作。 我试过了:

class Bob extends CI_Controller

class Bob extends MX_Controller

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

Answer 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 :: $实例不会,如果它在图书馆的__construct(工作),因为MY_Controller尚未确定



文章来源: Codeigniter-HMVC get_instance() in library does not return expected result