PHP:间接修改重载属性

时间:2011-07-09 22:38:01

标签: php overloading

我在PHP 5.3.6上遇到问题,我收到以下错误:

 Indirect modification of overloaded property CI_Session::$form_certs has no effect

我读到了它并发现了一个丑陋的解决方案来解决2007 here中旧的PHP 5.2.x错误。

但就我而言,导致错误的__get()方法不是__set()方法。

我的代码如下所示:

class CI_Session{
    __set($name,$val){
       return $_SESSION[$name] = $val; 
    }
}

导致错误的行:

$this->session->form_cert['foo'] = 'bar'; //$this->session is an instance of CI_Session

在尝试上述操作之前,我已尝试明确设置$this->session->form_cert = array();,但问题仍然存在。

我还在PHP 5.3.3上对此进行了测试,并得到了相同的结果。

除了使用这个旧的解决方法之外我还能做些什么(这会破坏我已编写的另外500行代码)? (这是同一个错误吗?为什么它仍然存在于5.3.6中?)

0 个答案:

没有答案