Добрый вечер. Пытаюсь делать по учебнику класс для работы с сессиями но не могу понять как его использовать , подскажите пожалуйста ?? Вот сам код PHP: abstract class Registry { abstract protected function get($key); abstract protected function set($key,$value); } class SessionRegistry extends Registry{ private static $instance; private function __construct() { session_start(); } static function instance() { if(!isset(self::$instance)) { self::$instance = new self(); } return self::$instance; } protected function get($key) { if(isset($_SESSION[__CLASS__][$key])) { return $_SESSION[__CLASS__][$key]; } } protected function set($key, $value) { $_SESSION[__CLASS__][$key]=$value; } function setComplex(Complex $complex) { self::instance()->set('complex',$complex); } function getComplex() { return self::instance()->get('complex'); } } А именно того что там такое класс Complex ? Это класс в котором хранятся данные сессии чтоли ?? и зачем тогда метод Set нужен ? Просто что такое класс Complex там почему то не написано Оо
аа да метод сет приватный ... хмм тогда получается что класс Complex это какая то структура которая передается в сессию ?
Автор скорее всего описывает не что то конкретное,а с некоторым уровнем абстракции. Под Complex он вероятнее всего подразумевает просто какой либо сложный объект,например setUser(User $user) и тд.
Блин не получается ничего Делаю так Создал свой класс Complex PHP: class Complex { protected $userId; protected $fio; function getUserId() { return $this->userId; } function setUserId($id) { $this->userId = $id; } function getLogin() { return $this->userId; } function setLogin($fio) { $this->fio = $fio; } } дальше создаю экземпляр этого класса и пытаюсь запихать его в SessionRegistry $sessionReg = SessionRegistry::instance(); $complex = new Complex(); $complex->setLogin($login); $sessionReg->setComplex($complex); Дальше пытаюсь вытащить оттуда логин PHP: require_once '/regestries/RequestRegistry.php'; require_once '/regestries/SessionRegistry.php'; class ViewHelper { static function getRequest() { return RequestRegistry::getRequest(); } static function getSessionRequest() { return SessionRegistry::instance(); } } $request = ViewHelper::getSessionRequest(); $login = $request->getComplex(); print_r('Добро пожаловать!!! '. $login->getLogin()); вываливается ошибка Код (Text): Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Complex" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in как раз на строке print_r('Добро пожаловать!!! '. $login->getLogin()); Я же вроде сохраняю там данные прежде чем оттуда их взять ??
эхх гугл подсказал что это изза того что он не может найти класс в который десериализуются данные из сессии. Добавил класс Complex и ошибка пропала, но вот беда в том что похоже объект хоть и не нулл но всеже пустой т.к. $login->getLogin() выдает пустое значение ( --- Добавлено --- Все заработало Там в методе модели комплекс не ту переменную возвращал))