Wadslog

[Zend Framework] Zend_Session_Namespace ④

Jan 18, 2008

前回。 Zend_Session_Namespaceその他の機能を以下に書いていきます。 ・getIterator() Zend_Session_Namespaceでは、セッションデータをforeach文などで使えるように、IteratorAggregateインターフェースを実装していて、そのための関数です。 関数を呼び出すと、ネームスペース中のセッションの値がArrayObjectのオブジェクトが返ります。 ・lock() 現在のセッションネームスペースを読込み専用にします。同一リクエスト内でのみ有効です。 現段階で影響を与えるところはSession_Namespaceの__set()で、読込み専用になっていると例外が発生します。$foo = new Zend\_Session\_Namespace('foo'); try { $foo->a = 0; $foo->b = 1; $foo->lock(); $foo->c = 2; // 例外発生 } catch(Exception $e) { echo "例外が発生しました".PHP\_EOL; foreach($foo as $key=>$value) { echo "$key:$value".PHP\_EOL; } }結果は例外が発生しました a:0 b:1セッション全体でのアクセス権限としては、これとは別にZend_Session_Abstractの$_writableというプロパティーで管理されています。 詳しくは書きませんが、これはZend_Sessionの以下の関数で設定できます。stop() writeClose() destroy()・unlock() 現在のネームスペースの読込み専用を解除します。 ・unlockAll() すべてのネームスペースの読込み専用を解除します。``` $foo = new Zend_Session_Namespace(‘foo’); $bar = new Zend_Session_Namespace(‘bar’); $foo->lock(); $bar->lock();

$foo->unlockAll(); //$barのロックも解除

$foo->a = 0; $bar->b = 1; // 例外は発生しません

comments powered by Disqus