debug() - выводит дамп объекта inc_*() - подключает необходимые библиотеки и классы PHP: <?php require_once '../../../../config.php'; inc_lib('db'); inc_lib('ajax'); inc_class('UserMapper'); session_start(); debug($_SESSION); ?> В сессии на момент вызова скрипта уже храниться объект. Дамп выглядит следующим образом PHP: [user] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => User [id] => 2 [fio] => Иванов Иван [group] => __PHP_Incomplete_Class Object // и.т.д Поискал в гугле, говорят что нужно объявлять классы до session_start(). Ну так я и сделал. В чем может быть проблема?
PHP: <?php //include 'Test.php'; ini_set('unserialize_callback_func','loadClass'); session_start(); // $_SESSION['test'] = new Test(); print_r($_SESSION); function loadClass($name) { include $name . '.php'; } Хотя у меня и так работает: PHP: <?php include 'Test.php'; session_start(); print_r($_SESSION);
Sergey89, не выходит, все тоже самое. Кстати маленькое уточнение. Скрипт данный выше, является backend-ом для ajax (если это как-то поможет)
PHP: <?php require_once '../../../../config.php'; inc_lib('db'); inc_lib('ajax'); inc_class('UserMapper'); session_start(); var_dump(class_exists('UserMapper')); // или какой там класс? ?> что говорит?
Sergey89 Я сомневаюсь, что проблема в этом, потому-что классы подключаются нормально. PHP: var_dump(class_exists('UserMapper')); говорит, то что и должен PHP: bool(true)
Sergey89 Нет, ничего такого не стоит. Я думаю, что нужно переводить объект в массив и работать с ним. Хотя странно, в остальных случаях работает.
А запусти несколько раз такой код: PHP: <?php class Test { public $y = 1; public $x = 1; } session_start(); if (!isset($_SESSION['test'])) { $_SESSION['test'] = new Test; } print_r($_SESSION); Если не будет работать, то явно баг какой-то. Обнови версию PHP попробуй.