Использование переменной сеанса с объектами - PullRequest
1 голос
/ 01 апреля 2011

Я создал объект и присвоил значения следующим образом:

$ car_object = & new Car ();

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

Как сохранить $ car_object внутри переменной сеанса?Как я могу получить $ car_object из переменной сессии?

Ответы [ 3 ]

5 голосов
/ 01 апреля 2011

Установить для сеанса:

$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 голосов
/ 01 апреля 2011

Более простым способом было бы сделать:

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{}
0 голосов
/ 01 апреля 2011

Сериализация объекта и сохранение его в сеанс работ.Вот целое обсуждение этого: PHP: хранение «объектов» внутри $ _SESSION

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...