PHP: косвенное изменение перегруженного свойства - PullRequest
1 голос
/ 10 июля 2011

У меня проблема с PHP 5.3.6, я получаю следующую ошибку:

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

Я прочитал об этом и нашел уродливое решение старой ошибки PHP 5.2.x из2007 здесь .

Но в моем случае это не метод __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?)

...