Как я могу создать хранилище классов объектов в PHP-сессии, а затем получить его на моей следующей странице как переменную. Не могли бы вы помочь?
Вот мой класс.inc.php
class shop { var $shoeType; var $color; public function __construct() { $shoeTypeService = new ShoeTypeService(); $shoe = $shoeTypeService->getAllShoes(); $this->shoeType = $shoe[20]; } }
Когда вы создаете экземпляр класса, вы можете назначить его сеансу (при условии, что он запущен)
$_SESSION['SomeShop'] = new Shop(); or $Shop = new Shop(); //stuff $_SESSION['SomeShop'] = $Shop;
Имейте в виду, что везде, где вы обращаетесь к этому объекту, вам понадобится класс магазина.
этот первый код этого кода
$obj = new Object(); $_SESSION['obj'] = serialize($obj);
на второй странице
$obj = unserialize($_SESSION['obj']);
Вы не можете просто сохранить экземпляр объекта в сеанс. В противном случае объект не будет отображаться правильно на следующей странице и будет экземпляром __PHP_Incomplete_Class. Для этого вам необходимо выполнить сериализацию вашего объекта в первом вызове и выполнить несериализацию в следующих вызовах, чтобы определения объектов и структура были неповрежденными.
Расширение на ответ Джейкс. Это можно сделать с очень небольшими проблемами, как все в php. Вот тестовый пример:
session_start(); $_SESSION['object'] = empty($_SESSION['object'])? (object)array('count' => 0) : $_SESSION['object']; echo $_SESSION['object']->count++;
Он будет выводить количество, увеличенное на 1 при каждой загрузке страницы. Однако вам нужно быть осторожным, когда вы сначала инициируете переменную $ _SESSION, чтобы проверить, уже ли она установлена. Вы не хотите больше писать значение каждый раз. Поэтому обязательно выполните:
if (empty($_SESSION['SomeShop'])) $_SESSION['SomeShop'] = new Shop();
или еще лучше:
if (!$_SESSION['SomeShop'] instanceof Shop) $_SESSION['SomeShop'] = new Shop();