symfonyのセッションスコープ管理

タブブラウザとかで、セッションメモリの衝突を防ぐためセッション配列のスコープ管理の仕組みを考える。
ちなみにsymfonyを使っているわけではなく、セッション管理の仕組みの調査。

sfUserクラスsetAttributeでやるらしい

public function setAttribute($name, $value, $ns = null)
{
    return $this->attributeHolder->set($name, $value, $ns);
}

で、バッファに入れといて、実際にセッションへの登録はこれ。
public function shutdown() の

$attributes = array();
foreach ($this->attributeHolder->getNamespaces() as $namespace)
{
    $attributes[$namespace] = $this->attributeHolder->getAll($namespace);
}
// write attributes to the storage
$this->storage->write(self::ATTRIBUTE_NAMESPACE, $attributes);

ソースを読むと一目瞭然でこうなる。

$sfUser->setAttribute( "work_memory", $data, "window毎に異なるhash" );

実際の運用はラップして独自メソッド。かな。