【问题标题】:Confuse about Yii2 session对 Yii2 会话感到困惑
【发布时间】:2016-10-18 07:41:30
【问题描述】:

我使用 Yii2 框架来做我的 PHP 项目。但是我遇到了一些麻烦。这是我的代码。 首先,通过 yii2 session api 设置 session 变量,如下所示:

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 不能在第一个 var_dump 中转储键 'test' 的值。

【问题讨论】:

标签: php yii yii2


【解决方案1】:

对于检索会话条目尝试使用session->get()

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

例如:

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

查看本指南以获取一些示例和建议http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html

【讨论】:

  • 感谢您的回答,但我的意思不是如何获得“测试”值。这是我不明白为什么。因为 $app->session 是一个 OBJECT,那么为什么使用数组 $app->session['test'] 有效呢?它如何从对象中获取这样的键值。这让我很困惑。
  • 如果您查看对象是 6 个元素的对象,则第 6 个元素是一个数组,并包含一个名为“test”的条目作为第二个条目,因此您可以将 test 作为一个数组访问,因为在一个数组中对象 例如:Yii::$app->session['test']) ...希望此评论有用..
  • 第 6 个元素是 ["_behaviors":"yii\base\Component":private]=>NULL。当我尝试 var_dump $_SESSION 时,它包含您看到的“测试”值
猜你喜欢
  • 2011-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2012-07-22
相关资源
最近更新 更多