Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对对象使用会话变量_Php_Session_Object - Fatal编程技术网

Php 对对象使用会话变量

Php 对对象使用会话变量,php,session,object,Php,Session,Object,我创建了一个对象,并指定了如下值: $car_object=&new car() 如何将$car\u对象存储在会话变量中? 如何从会话变量中取出$car\u对象?设置为会话: $car_object = new Car(); $car_object->offer = 'Sale'; $car_object->type = 'Sport Car'; $car_object->location = "Buffalo, New york"; $_SESSION['car']

我创建了一个对象,并指定了如下值:

$car_object=&new car()

如何将$car\u对象存储在会话变量中? 如何从会话变量中取出$car\u对象?

设置为会话:

$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;
设置为会话:

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

序列化对象并将其存储到会话中是可行的。下面是关于这一点的完整讨论:

序列化对象并将其存储到会话工作中。下面是关于这一点的完整讨论:

更简单的方法是:

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

更简单的方法是:

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

为什么要将其存储为会话变量?为什么要将其存储为会话变量?请确保将类规范包含到正在从会话存储取消序列化对象的页面中,否则,您将拥有一个没有方法的对象。请确保将类规范包含到正在从会话存储取消序列化对象的页面中,否则您将拥有一个没有方法的对象。