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" );
実際の運用はラップして独自メソッド。かな。