Zend_Session_Namespace ?

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);
}

上記は、myNamespace->barを$_SESSION['foo']['bar']に置き換えて理解していただければいいと思います。(実際は、データへのアクセス権限や有効期限なども見ているのでもう少し複雑です)。

正確に把握したい人はソースで直接__get、__set、__isset、__unsetの実装を見てください。時間があればまた書きたいと思います(続き)。