2011-04-01 13 views
1

我已创建一个对象,并指定值如下:对象会话变量:使用具有

$ car_object = &新车();

$car_object->offer = 'Sale'; 
$car_object->type = 'Sport Car'; 
$car_object->location = "Buffalo, New york"; 

如何将$ car_object存储在会话变量中? 如何从会话变量中获取$ car_object?

+0

你为什么希望将其存储为一个会话变量? – 2011-04-01 14:47:07

回答

4

设置为会话:

$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; 
+3

确保您将类规范包含在您将会话存储中的对象解序列化的页面中,否则您将拥有一个没有方法的对象。 – Nick 2011-04-01 14:56:59

+0

哇。非常感谢 – user331859 2011-04-01 15:03:34

2

一个更简单的方法是做:

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{}