存储会话数据

时间:2011-09-21 01:33:40

标签: symfony1 symfony-1.4

我有一些关于在Symfony中存储会话数据的修辞问题。 我们可以将会话数据存储为变量:

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

或者作为数组:

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

使用第一个示例,我们可以使用hasAttribute('name')来检查它是否已设置,并且使用第二个示例,我们将需要两行代码进行此类检查。例如。像hasAttribute('name')这样的方法不起作用:

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

此外,将新值设置为变量需要更多行:

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

但是,使用Arrays存储会话的好处是能够立即清除整个数组。

也许有可能以更好的方式操纵数组而我不知道? 或许我的陈述完全错了...... 什么是最佳做法?

1 个答案:

答案 0 :(得分:3)

您可以添加命名空间来存储数据:

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

要检索数据,您还需要使用命名空间:

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

您可以检查用户是否具有名称空间的属性:

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

symfony会将值作为数组存储到命名空间中。