Как использовать Zend \ Session в zf2?

Кто-нибудь пытается zf2? Я не могу понять новый механизм использования сессий в zf2. Как я могу писать и читать в / из сеанса в новой структуре zend?

Также я не могу найти примеров в Интернете.

Некоторые примеры использования сеансов zf2:

Создание сеанса:

 use Zend\Session\Container; $session = new Container('base'); 

Проверьте, существует ли ключ в сеансе:

 $session->offsetExists('email') 

Получение значения из сеанса по ключу:

 $email = $session->offsetGet('email'); 

Значение настройки в сеансе:

 $session->offsetSet('email', $email); 

Сброс значения в сеансе:

 $session->offsetUnset('email'); 

И другой простой способ использования сеанса:

 $session = new Container('foo'); 

// это все эквивалентные средства для одного и того же конца

 $session['bar'] = 'foobar'; $session->bar = 'foobar'; $session->offsetSet('bar', 'foobar'); 

Конечно, да, вы должны использовать Zend \ Session \ Container

Контейнер расширяет ArrayObject и создает экземпляр с помощью ARRAY_AS_PROPS что означает, что вы можете легко перебирать свойства и читать / записывать их, например

 use Zend\Session\Container as SessionContainer; $this->session = new SessionContainer('post_supply'); $this->session->ex = true; var_dump($this->session->ex); 

Первый аргумент – это пространство имен сеанса, а второе – менеджер . Manager – это фасад для Storage and SaveHandler и он сконфигурирован с помощью ConfigInterface для сохранения ваших данных сеанса на сервере DB или Memcache.

Сейчас я работаю с zf2. Я нашел использование сеансов в:

Zend\Authentication\Storage\Session.php

Может быть, вы можете найти свой ответ там.

Если вы пытаетесь использовать сеанс в своем действии входа, вы можете использовать: « Zend\Authentication\AuthenticationService ». Он аутентифицирует пользователя и сохраняет сеанс.

getStorage()->write($contents) будет хранить сеанс.

ну вот краткий пример. я реализовал в отношении поддержания сеанса успешной аутентификации пользователя.

 <?php $registry = Zend_Registry::getInstance(); $DB = $registry['DB']; $authAdapter = new Zend_Auth_Adapter_DbTable($DB); $authAdapter->setTableName('user'); $authAdapter->setIdentityColumn("user_name"); $authAdapter->setCredentialColumn("user_password"); //get values $username = $request->getParam('username'); $password = $request->getParam('password'); //set values $authAdapter->setIdentity($username); $authAdapter->setCredential($password); $auth = Zend_Auth::getInstance(); //to store in session $auth->setStorage(new Zend_Auth_Storage_Session('front')); $authResult = $auth->authenticate($authAdapter); if ($authResult->isValid()) { $authAdap = $authAdapter->getResultRowObject(null, "Password"); $auth->getStorage()->write($authAdap); $this->_redirect('/login/controlpannel'); } else { $this->_redirect('/login/login'); } ?> 

получение значений или проверка данных, хранящихся в сеансе, связанных с пользователем

 <?php $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('front')); if($auth->hasIdentity()){ $data = $auth->getStorage()->read(); print_r($data); }else{ $this->_redirect('/login/login'); } ?> 

надеюсь, это может помочь кому-то

Чтобы начать сеанс, вам необходимо использовать

 zend\session\container