Это одна из тех вещей, которые трудно отлаживать в изоляции. Хранение экземпляров объектов в PHP-сессиях всегда немного сложно, и не гарантируется 100% -ная работа. Вот несколько общих советов по отладке, которые могут помочь вам разобраться в этом.
Сначала проверьте журнал ошибок Apache. Вы получаете "метод, вызванный при ошибке необъектного объекта"? Если это так, это означает, что вы не получаете объект обратно из сеанса. Если нет, есть ли ошибка, указывающая на сбой вызова метода по другой причине?
Во-вторых, проверьте, что вы действительно получаете от своей сессии.
if($comd =="getstate") {
$st= $_SESSION['statefile'];
//get the class of st
phplog("instance=".get_class($st));
//get a reflection dump of st
$ref = new ReflectionClass($st);
$string = $ref->__toString();
phplog("reflection=".$string);
}
В-третьих, посмотрите на сериализованное строковое значение, которое хранится в самом сеансе. Вы на самом деле храните сериализованный объект? В вашей среде разработки установите значение ini для session.save_path в php.ini, например, в / tmp (или используйте метод ini_set для того же):
session.save_path = "/tmp"
и затем проверьте файлы, созданные в / tmp (или любой другой папке). Вы должны увидеть строку, которая начинается с:
statefile:O:..........
Имя класса, в котором был создан объект, также будет включено туда, а также значения, сохраненные в свойствах.