将会话变量与对象一起使用
Posted
技术标签:
【中文标题】将会话变量与对象一起使用【英文标题】:Using session variable with objects 【发布时间】:2011-07-27 18:18:29 【问题描述】:我创建了一个对象并赋值如下:
$car_object =& 新车();
$car_object->offer = 'Sale';
$car_object->type = 'Sport Car';
$car_object->location = "Buffalo, New york";
如何将 $car_object 存储在会话变量中? 如何从会话变量中取出 $car_object?
【问题讨论】:
为什么要将其存储为会话变量? 【参考方案1】:更简单的方法是:
class SessionObject
public function __construct($key)
if(isset($_SESSION[$key]))
$_SESSION[$key] = array();
$this->____data &= $_SESSION[$key];
public function __get($key)
return isset($this->___data[$key]) ? $this->___data[$key] : null;
public function __set($key,$value)
$this->___data[$key] = $value;
然后你可以使用这样的东西;
class CarSession extends SessionObject
public function __construct()
parent::__construct('car'); //name this object
/*
* Custom methods for the car object
*/
$Car = new CarSession();
if(!$car->type)
$Car->type = 'transit';
这有助于在会话中存储对象的更易于管理的框架。
例如:
class Currentuser extend SessionObject
class LastUpload extend SessionObject
class UserData extend SessionObject
class PagesViewed extend SessionObject
【讨论】:
【参考方案2】:序列化对象并将其存储到会话中。以下是对此的完整讨论:php: Storing 'objects' inside the $_SESSION
【讨论】:
【参考方案3】:设置会话:
$car_object = new Car();
$car_object->offer = 'Sale';
$car_object->type = 'Sport Car';
$car_object->location = "Buffalo, New york";
$_SESSION['car'] = $car_object;
从会话中获取:
$car_object = $_SESSION['car'];
echo $car_object->offer;
【讨论】:
确保将类规范包含在要从会话存储中反序列化对象的页面中,否则您将拥有一个没有方法的对象。以上是关于将会话变量与对象一起使用的主要内容,如果未能解决你的问题,请参考以下文章
使用nodejs中的用户对象登录后将重新生成的会话ID发送回用户代理
Flask-SQLAlchemy - 会话如何与多个数据库一起工作?
Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用