2011-03-31 204 views
1

创建一个名称空间后,如果我尝试向其中添加一个值,该变量具有特定的值,但不具有名称空间的会话。但是,如果我创建了一个变量,那是一个数组的关键字,并将其添加到该变量中,它将被保存到会话中。为了说明我的观点:Zend_Session_Namespace不按预期工作

public $submitUser; 
public function init() 
{ 
    $this->submitUser = new Zend_Session_Namespace('submitUser'); 
    Zend_Session::rememberMe(60*60*24*7); 
} 

public function selectUserAccount ($username) 
{   
    $returnArray = array(
     'name' => 'Man', 
     'surname' => 'With a surname', 
     'username' => $username 
    ); 
    $this->submitUser->user = $returnArray; 
} 

插入到会话

'submitUser' => 
    array 
     'user' => 
     array 
      'name' => string 'Man' (length=3) 
      'surname' => string 'With a Surname' (length=14) 
      'username' => string 'jpeiseni' (length=8) 

public function selectUserAccount ($username) 
{   
    $returnArray = array(
     'name' => 'Man', 
     'surname' => 'With a Surname', 
     'username' => $username 
    ); 
    $this->submitUser = $returnArray; 
} 

不设置变量在会话

这是一个小麻烦事,我可能会住在一起,但我想知道是否有一个理由不允许namaspace有价值为了它自己,还是我错过了什么?

回答

4

是的,这是有道理的,你要切实做好是这样的:

$this->submitUser = new Zend_Session_Namespace('submitUser'); 
$this->submitUser = $returnArray; 

所以你创建Zend_Session_Namespace的实例,然后你一个完全不同的变量替换它。

也许这样的事情会更有意义(这取决于这个代码是):

$this->submit = new Zend_Session_Namespace('submit'); 
$this->submit->user = $returnArray; 
+0

啊,妈的......我是如此沉浸在建设,我没有看看下面的简单的PHP。这很有道理。最后我用'$ this-> submitUser = new Zend_Session_Namespace('submitUser'); $ this-> submitUser = $ this-> submitUser-> submitUser;'所以它可以工作,但仍然比原来短。 – 2011-03-31 14:30:43

+0

你的意思是'$ this-> submitUser = new Zend_Session_Namespace('submitUser'); $ this-> submitUser = $ this-> submitUser-> user;' – jimy 2011-03-31 15:27:15

+0

其实,同样的事情。你只是使用数组键“user”,我再次使用'submitUser'。 – 2011-03-31 16:03:35

3

试试这个:

public function selectUserAccount ($username) 
{ 
    $returnArray = array(
     'name' => 'Man', 
     'surname' => 'With a Surname', 
     'username' => $username 
    ); 
    $this->submitUser->applySet('array_merge', $returnArray); 
}