2016-10-18 6 views
0

Я использую фреймворк Yii2 для выполнения своего проекта PHP. Но я столкнулся с некоторыми неприятностями. Вот мой код. Сначала установите переменную сеанса через yii2 сеанса API, как это:Смутить про сессию Yii2

Yii::$app->session->set('test', 123); 

Тогда в другом действии, я надеюсь получить эту переменную:

var_dump(Yii::$app->session); 

@session_start(); 
var_dump($_SESSION); 

var_dump(Yii::$app->session['test']); 

Но я нашел результат:

object(yii\web\Session)#109 (6) { 
    ["flashParam"]=> 
    string(7) "__flash" 
    ["handler"]=> 
    NULL 
    ["_cookieParams":"yii\web\Session":private]=> 
    array(1) { 
    ["httponly"]=> 
    bool(true) 
    } 
    ["_hasSessionId":"yii\web\Session":private]=> 
    NULL 
    ["_events":"yii\base\Component":private]=> 
    array(0) { 
    } 
    ["_behaviors":"yii\base\Component":private]=> 
    NULL 
} 
array(2) { 
    ["__flash"]=> 
    array(0) { 
    } 
    ["test"]=> 
    int(123) 
} 
int(123) 

Я задавался вопросом, почему Yii :: $ app-> session НЕ МОЖЕТ сбрасывать значение ключа 'test' в первом var_dump.

+0

относятся: HTTP: // StackOverflow .com/documentation/yii2/3584/session/12367/session-in-yii2 # t = 201610181227147314455 –

ответ

0

Для получения запись сеанса Попробуйте использовать session->get()

$app->session->get('test') ; 

например:

var_dump($app->session->get('test') ); 

взглянуть на это руководство для некоторого образца и предложения http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html

+0

спасибо за ур ответ, но моя точка зрения заключается не в том, как получить 'test' val уе. Это то, что я не понимаю ПОЧЕМУ. Поскольку $ app-> session является OBJECT, то почему используется использование массива $ app-> session ['test']? Как он может получить ключевое значение, подобное этому объекту. Это меня смутило. – aszx0413

+0

Если вы посмотрите на объект - это объект из 6 элементов, 6-й - это массив и в качестве второй записи будет содержать запись с именем «test», чтобы вы могли получить доступ к тесту в качестве массива, потому что в массиве внутри объекта, например: Yii :: $ app-> session ['test']) ... надеюсь, что этот комментарий полезен. – scaisEdge

+0

6-й элемент: ["_behaviors": "yii \ base \ Component": private] => NULL. Пока я пытаюсь var_dump $ _SESSION, он содержит значение «test», которое вы видели – aszx0413

Смежные вопросы