symfonyのセッション管理

symfonyのセッション管理は,sfUserとsfStorageというオブジェクトを使って行う。


sfUserはセッションデータに触れるためのインタフェイス。
key=valueという最もシンプルなアクセサのほか,
ログイン状態や権限(sfSecurityUser)へのアクセサ,
独自に利用頻度の高いデータに関するアクセサを特別に用意したりしてもいいのだろう。


sfStorageは,実際の外部ストレージとやりとりをするもの。
アプリ側から直接触ることはない。
インタフェイス的にはread(key), remove(key), refenerate() など。


インスタンスの作られるフローは以下のようになる。
実際にデータが保存されるタイミングはsfStorageの終了処理であることがみそ。
1. sfStorage初期化
2. 外部ストレージから読み込み
3. sfUser初期化
4. アクション層(ユーザがデータを読んだり書いたり)
5. sfUser終了処理
6. sfStorage終了処理
7. 外部ストレージに書き込み


ちょっとソースを読んだので図を描いてみた。
覚え書き覚え書き。

sfUserのクラス図

sfStorageのクラス図

シーケンス図