令人困惑的问题并且无法提出好的头衔,但我会尽力解释。
我正在使用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()
函数来“修复”它,但这不是一个很好的解决方案。有什么想法吗?
答案 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
,而不是像我需要的那样存储引用。
感谢您的评论。