Zend_Session_Namespaceは名前空間に対応したセッションデータを扱うことができ、これを使えば効果的にセッションデーターでの名前衝突を防ぐことが出来そうです。 Zend_Session_Namespaceは、スーパーグローバル変数$_SESSIONとext/sessionを使用して実装されています。 fooという名前空間のセッションを使用する場合は以下のとおりです。$myNamespace = new Zend\_Session\_Namespace('foo');
Zend_Session_Namespaceでの名前空間の実現は以下のようになっています。$\_SESSION\['foo'\]
このfooという名前空間のセッションのbarに値を代入するには$myNamespace->bar = $vaule;
のようになります。これは$\_SESSION\['foo'\]\['bar'\] = $value;
とすることと同じになります。 この操作は、クラスのメンバーへのアクセスを、__get()、__set()、__isset()、 __unset()でオーバーロードしているので可能となっています。 (__isset や __unset はisset() 関数や unset() を使ったときのオーバーロードとなり、PHP 5.1.0 以降で有効です)```
$myNamespace->bar = $vaule;
$bar = $myNamespace->bar;
if(isset($myNamespace->bar)) { unset($myNamespace->bar); }