繁体   English   中英

在会话变量中存储PHP对象

[英]Storing A PHP Object In A Session Variable

我是OOP的新手,正在写我的第一堂课。 我为一家保险经纪公司工作,正在尝试使用一个类来存储有关报价的内容,并将对象存储为会话变量。

问题是,当我查看会话变量时,我得到:

sessionName         

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

谁能告诉我为什么显示的班级名称不完整?

确保在调用session_start()之前存在类定义,例如

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

或设置一个unserialize_callback_func,该尝试将尝试加载类定义,如http://docs.php.net/function.unserialize中所述

编辑:这也可以通过spl_autoload_register()完成 例如

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>';

我设法自己解决了所有问题,但不确定如何解决。

我确保显示值的页面的结构如下:

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();

我还确保显示调用对象的页面没有使用任何序列化函数,因为它们似乎只会引起错误。

我正在用这个

 if (!is_object($_SESSION)) $_SESSION = new ArrayObject();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM