Хранение объекта PHP в переменной сеанса - PullRequest
5 голосов
/ 11 января 2010

Я новичок в ООП и пишу один из моих первых занятий. Я работаю на страхового брокера и пытаюсь использовать класс для хранения информации о котировке и сохранения объекта как переменной сеанса.

Дело в том, что при просмотре переменных сеанса я получаю:

sessionName         

__PHP_Incomplete_Class Object
(
    [__PHP_Incomplete_Class_Name] => myClass
    [brokerId] => 

Может кто-нибудь сказать мне, почему он показывает неполное имя класса?

Ответы [ 3 ]

5 голосов
/ 11 января 2010

Убедитесь, что либо определение класса присутствует перед вызовом session_start (), например,

require_once 'class.MyClass.php';
session_start();

, либо установите unserialize_callback_func, который попытается загрузить определение класса, как описано в http://docs.php.net/function.unserialize.

edit: это также можно сделать с помощью spl_autoload_register () .Например,

<code>spl_autoload_register(function($name) {
    // only a demo ...this might be insecure ;-)
  require_once 'class.'.$name.'.php';
});
session_start();
echo '<pre>';
var_dump($_SESSION);
echo '
';
1 голос
/ 11 января 2010

Мне удалось все это исправить самостоятельно, хотя я не был уверен, как.

Я гарантировал, что страница, отображающая значения, была структурирована следующим образом:

require_once("Class.php");
session_start();

$_SESSION['myObject']->printVariables();

И чтобы страница, создающая объект, была похожа на:

# Include the class
require_once($_SERVER['DOCUMENT_ROOT'] . "/Class.php");

# Instantiate a new policy
$_SESSION['myObject'] = new quote('54');
$_SESSION['myObject']->printVariables();

Я также позаботился о том, чтобы на странице, отображающей вызов объекта, не использовались какие-либо функции сериализации, поскольку они, похоже, вызывали только ошибки.

0 голосов
/ 05 августа 2014

Я использую это

 if (!is_object($_SESSION)) $_SESSION = new ArrayObject();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...