我是OOP的新手,正在写我的第一堂课。我为保险经纪人工作,我正在尝试使用类存储有关报价的内容,并将对象存储为会话变量。
事情是,当我查看会话变量时,我得到:
sessionName
__PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => myClass
[brokerId] =>
有谁可以告诉我为什么它显示不完整的类名?
答案 0 :(得分:5)
确保在调用session_start()之前存在类定义,例如
require_once 'class.MyClass.php';
session_start();
或设置一个unserialize_callback_func,它将尝试按http://docs.php.net/function.unserialize所述加载类定义。
编辑:这也可以通过spl_autoload_register()完成。 E.g。
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 '</pre>';
答案 1 :(得分:1)
我设法自己解决这个问题,但不确定如何。
我确保显示值的页面结构如下:
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();
我还确保显示调用对象的页面没有使用任何序列化函数,因为它们似乎只会导致错误。
答案 2 :(得分:0)
我正在使用此
if (!is_object($_SESSION)) $_SESSION = new ArrayObject();