2011-03-31 182 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); 
}