как правильно хранить объекты внутри сессий?

  • Автор темы Автор темы Wingely Dog
  • Дата начала Дата начала

Wingely Dog

Guest
как правильно хранить объекты внутри сессий?

Добрый день, делаю вот что,

пишу магазин и заказ решил хранить в виде объекта.
создаю объект $ord и сую в переменную сессии

$_SESSION['ord'] = $ord;

затем пытюсь прочесть этот объект, в другом классе, при создании отображения потребительской корзины

PHP:
class cartHtml{
//.............
  function getHtml(){
    global $_SESSION;
    if (isset($_SESSION['ord'])){
      $ord = $_SESSION['ord'];
      while ($elmnt = $ord->getNext()){
/*
тут я получаю сообщение об ошибке

Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>order</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/html/escor/modules/ctlg/class.cart_html.php on line 40

*/
      }
    }
  }
//.................
}

вобщем переменная сессии есть, но как объект она почемуто не действует. вопрос почему?

пробовал сериализовать объект перед помещением его в сессию, не помогает.
 
перед session_start(); (во время которого объекты из сессии становятся доступны скрипту) нужно инклудить классы этих объектов.
у тебя получается: объект есть, а его класс РНР неизвестен.
 
ага, что делать, понял, спасибо.

теоретический вопрос тогда можно?
возможно вопрос глупый, но все же.
а разве объект, это не кусок памяти структурированный особым образом? тоесть мне не понятно, зачем нужно по новой загружать исходный код класса, для того чтобы достать объект из сессии?
 
>а разве объект, это не кусок памяти структурированный особым образом?
нет

>тоесть мне не понятно, зачем нужно по новой загружать исходный код класса,
>для того чтобы достать объект из сессии?
потому, что объект в сессии - это просто кусок текста с именем класса и значениями атрибутов, которые присущи только этому экземпляру.
а объявления методов и др. информация не может быть получена из сериализованного объекта.
 
Сверху