Новые книги

Анализируются нетрадиционные способы управления потребительскими предпочтениями (эпатаж, интрига, событийные акции и др.) в аспекте «физиологических» механизмов; приводится множество нестандартных креативных решений в области создания ажиотажа.

Для студентов, преподавателей экономических вузов, а также всех тех, кто интересуется проблемами маркетинга.
Новая книга об HR-брендинге основана на проектах победителей и номинантов «Премии HR-бренд 2013». Помимо лучших практик от лучших работодателей России, а также результатов российских и международных исследований в книгу вошли уникальные материалы – интервью с наиболее профессиональными и эффективными HR-командами, подробно рассказывающими о собственных разработках, которые удостоились Премии, и роли HR в современном бизнесе.

Как определить свои целевые аудитории на рынке труда? Как мотивировать рядовых сотрудников на достижение амбициозных целей компании? Как удержать лучших специалистов? Каким образом средний бизнес может выиграть в конкурентной борьбе с крупными компаниями за перспективную молодежь?

Ответы на эти вопросы читатель найдет, ознакомившись с представленными здесь программами. Компании, реализовавшие их, уже получили впечатляющие результаты в снижении издержек и повышении эффективности работы. Своим опытом делятся Coca-Cola Hellenic, Mars, Nokian Tyres, «МегаФон», Независимая лаборатория ИНВИТРО, ОБИ, «Эльдорадо» и многие другие.

В электронную версию добавлены новейшие данные опросов среди компаний о размерах HR-бюджетов и использовании digital-инструментов, а также советы экспертов Консалтингового центра HeadHunter о специфике развития HR-бренда в условиях ограниченных бюджетов и острой конкуренции.

Издание будет полезно HR-специалистам, маркетологам и руководителям всех уровней.

Сериализация Объектов -Объекты в Сессиях

Учебник РНР
Назад Глава 13. Классы и Объекты Вперёд

Сериализация объектов - объекты в сессиях

Примечание: в PHP 3 объекты теряют ассоциацию со своим классом в процессе сериализации и десериализации. Результирующая переменная будет объектом типа, но не имеет класса и методов, и, таким образом, будет бесполезна (она станет похожа на массив со странным синтаксисом).

Внимание!

Следующая информация верна только для PHP 4.

serialize() возвращает строку, содержащую представление в виде потока байтов любой переменной, которая может храниться в PHP.
unserialize() может использовать эту строку для воссоздания оригинальных значений переменной. Использование serialize для сохранения объекта сохранит все переменные объекта. Функции объекта не сохраняются, только имя класса.

Чтобы иметь возможность unserialize() объект, должен быть определён класс этого объекта. То есть, если у вас имеется объект $a класса A в файле page1.php и вы его сериализуете, вы получите строку, которая ссылается на класс A и содержит все значения переменных, содержащихся в $a. Если вы хотите unserialize это в файле page2.php, воссоздав $a класса A, определение класса A обязано иметься в page2.php. Это можно сделать, например, сохранив определение класса A в include-файле и подключив этот файл и в page1.php, и в page2.php.

classa.inc:
  class A 
  {
      var $one = 1;
    
      function show_one()
      {
          echo $this->one;
      }
  }
  
page1.php:
  include("classa.inc");
  
  $a = new A;
  $s = serialize($a);
  // сохраняем $s там, где page2.php может его найти.
  $fp = fopen("store", "w");
  fputs($fp, $s);
  fclose($fp);

page2.php:
  // это необходимо для правильной работы десериализации.
  include("classa.inc");

  $s = implode("", @file("store"));
  $a = unserialize($s);

  // теперь используем функцию show_one() объекта $a.  
  $a->show_one();

Если вы используете сессии и session_register() для регистрации объектов, эти объекты сериализуются автоматически в конце каждой PHP-страницы и десериализуются автоматически на каждой последующей странице. Это означает, что эти объекты могут появиться на любой странице, после того как стали частью вашей сессии.

Настоятельно рекомендуем включать определение классов всех таких зарегистрированных объектов во все ваши страницы, даже если вы и не используете эти классы во всех ваших страницах. Если вы этого не сделаете и объект десериализуется в отсутствие определения класса, он потеряет ассоциацию с этим классом и станет объектом класса stdClass без всяких функций вообще, то есть станет практически бесполезен.

Итак, если в вышеприведённом примере $a стало частью сессии через запуск session_register("a"), вы должны включить/include файл classa.inc во все ваши страницы, а не только в page1.php и page2.php.


Назад Оглавление Вперёд
parentВверх Магические функции
__sleep
и __wakeup