首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库中的Codeigniter-HMVC get_instance()不返回预期结果

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

Stack Overflow用户
提问于 2013-05-08 05:20:59
回答 1查看 1.4K关注 0票数 0

我有财务主任:

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

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

代码语言:javascript
复制
$CI =& get_instance();
echo get_class($CI);

因此,我打开url "domain.com/bob",在没有安装HMVC时得到正确的回声,即

  • 鲍勃

一旦我安装了HMVC,结果是:

  • CI

因此,基本上,这意味着我不能使用$ CI ->在Bob中声明的某种someVariableINeed,因为它在CI中不存在。注意$CI->load->helper(),$CI->load->view(),.不过,他们都在工作。我试过:

代码语言:javascript
复制
class Bob extends CI_Controller

代码语言:javascript
复制
class Bob extends MX_Controller

但还是没用。我已经搜索了24小时,没有发现任何东西,希望有人知道这件事。我知道这不是一种访问类成员的非常干净的方法,但是这个问题是一个有数十万行代码的现有项目的简化,所以我不能改变这一点,库必须访问这些成员变量,至少我改变了整个项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 22:36:57

哦,是的!我是那个人,我修好了!考虑到可能创建“自己的”get_instance()系统,下面是我所做的:

代码语言:javascript
复制
class MY_Controller extends MX_Controller
{
    public static $instance;
    function __construct()
    {
        self::$instance || self::$instance =& $this;
        ...
    }
}

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

代码语言:javascript
复制
$CI =& MY_Controller::$instance;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16433210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档