为何在php命名空间内无法访问会话详细信息

时间:2014-07-16 12:48:58

标签: php session namespaces

我开发了一个基本的会话处理程序类。问题是,当我将会话设置为任何控制器操作时,其他操作/控制器中无法访问相同的会话详细信息。它显示我空数组。整个系统是面向php命名空间的。

参考:Session Manager

我们会保存和检索会话,如下所示。

use Cygnite\Common\SessionManager\Session;
use Cygnite\Common\Encrypt;                                    
$session = new Session(new Encrypt); 
$session->save($key, $value); 
$userDetails = $session->get($key); 

var_dump($userDetails); 

它在同一个动作中工作,但是当我重定向到其他控制器时 - >动作会话不会显示任何内容。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

可能您在每个控制器中创建了新的Session对象。而且你很可能应该创建一个Session对象并将其作为构造函数参数注入其他类。

use Cygnite\Common\SessionManager\Session;
use Cygnite\Common\Encrypt;        

$session = new Session(new Encrypt);
$session->save('something', 'My data');

class A 
{
  private $session;

  public function __construct($session) {
      $this->session = $session;

      echo $this->sesssion->get('something'); // it should work

      $x = new Session(new Encrypt); 
      echo $x->get('something'); // possible it won't work
}