2011-09-21 136 views
1

關於在Symfony中存儲會話數據,我有一些修辭問題。 我們可以存儲會話數據和變量:存儲會話數據

// The First Example 
$this->getUser()->setAttribute('hash', $hash); 
$this->getUser()->setAttribute('name', $name); 

或Array:

// The Second Example 
$this->getUser()->setAttribute('something' 
    , array('hash' => $hash,'name' => $name)); 

隨着第一個例子中,我們可以使用hasAttribute(「名稱」)檢查,如果它的設置和使用第二個例子,我們需要兩行代碼來進行這種檢查。例如。像hasAttribute(「名稱」)的方法是行不通的:

$something = $this->getUser()->getAttribute('something'); 
if($something['name']) //... 

此外,新的值設置爲變量需要更多的線路:

$something['name'] = 'New value'; 
$this->getUser()->setAttribute('something', $something); 

但有一個陣列的存儲會話的好處是能夠一次清除整個陣列。

也許是可以操縱陣列的更好的方法,我是不知道的? 或者也許我錯了我的言論...... 最佳做法是什麼?

回答

3

您可以添加一個命名空間來存儲你的數據:

$this->getUser()->setAttribute($name, $value, $namespace); 

並獲取數據,你需要使用的命名空間,以及:

$this->getUser()->getAtrribute($name, $default, $namespace); 

而且你可以檢查是否用戶也有一個名稱空間的屬性:

$this->getUser()->hasAttribute($name, $namespace); 

而symfony會將值存儲到na mespace作爲數組。

+0

太棒了!我不知道那個輝煌的功能! 感謝您的幫助! –

+0

是否可以通過某些名稱空間清除所有會話數據? –