子方法调用中的不完整对象

时间:2014-04-04 22:28:38

标签: php codeigniter

令人困惑的问题并且无法提出好的头衔,但我会尽力解释。

我正在使用CodeIgniter,并使用get_instance()函数来访问某些类中的CI超级对象。我有一个调用超级对象的父类

abstract class parent{

/**
 * properties
 */
protected $CI;

/**
 * constructor
 */
public function __construct(){
    $this->CI =& get_instance();
}

和许多子课程

class child extends parent{

    public function __construct(){
        //parent
        parent::__construct();

        print_r($this->CI);
    }

    public function doSomething(){
        print_r($this->CI);
    }
}

child构造函数中打印时,CI对象很好。当使用child doSomething()方法打印时,我会得到一个不完整的类对象。

编辑:

我相信我已经在某种程度上确定了这个问题。当CI创建其超级对象时,使用控制器类。在出现问题的情况下,这是Login控制器。显然,当我通过引用分配时,该名称仍然存在,然后如果我不再在我的Login控制器中,则它具有不完整类的问题。我可以通过在使用时重新调用get_instance()函数来“修复”它,但这不是一个很好的解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以经过大量的研究后,我似乎在PHP手册中找到了答案

Warning
You can't use references in session variables as there is no feasible way to restore a reference to another variable.

这就是为什么它在许多地方工作得很好,但是如果我从$_SESSION变量访问它,就像我登录的用户一样,我得到了错误。它在get_instance()变量创建时存储$_SESSION,而不是像我需要的那样存储引用。

感谢您的评论。