我有一些关于在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存储会话的好处是能够立即清除整个数组。
也许有可能以更好的方式操纵数组而我不知道? 或许我的陈述完全错了...... 什么是最佳做法?
答案 0 :(得分:3)
您可以添加命名空间来存储数据:
$this->getUser()->setAttribute($name, $value, $namespace);
要检索数据,您还需要使用命名空间:
$this->getUser()->getAtrribute($name, $default, $namespace);
您可以检查用户是否具有名称空间的属性:
$this->getUser()->hasAttribute($name, $namespace);
symfony会将值作为数组存储到命名空间中。