Zend_Session
は、シングルトンである $_SESSION
へのすべてのアクセスを、静的メソッドでカプセル化しています。
一般に、Zend_Session および Zend_Session_Namespace
コンポーネントを使用する開発者は
$_SESSION
を直接操作すべきではありません。
しかし、既存のコードを Zend_Session と共存させることも可能です。
その場合は、Zend_Session_Namespace の名前空間を使用することで、既存のコードが
$_SESSION
で使用しているキーとだぶらないようにします。
現在、既存のコード (あるいは他の PHP アプリケーション)
と予期せずセッション状態データを共有してしまうという問題の発生を
検出することはできません。
したがって、他の節で挙げられているガイドラインに従い、
できるだけ混乱を生じないよう気をつけなければなりません。
グローバルなセッションの管理は、Zend_Session で定義されている 静的な "クラス" メソッド群を使用します。これは、Zend_Session_Namespace および関連コンポーネントが管理するすべてのセッションに影響をおよぼします。 ほとんどの開発者は、Zend_Session を直接使用する必要はないでしょう。
$_SESSION
とは異なり、Zend_Session_Namespace
はすべてのセッションデータを別々の名前空間に分離します。
データを PHP の配列に保存し、その配列を $_SESSION
に保存するのです。この配列のキーが名前空間となります。
Zend_Session_Namespace のインスタンスを作成すると、選択した名前空間用の、
一意でない "ウィンドウ" が返されます。
指定したキー (名前空間名) に関連付けられる名前空間はひとつだけですが、
複数の "ウィンドウ" で同じ名前空間を使うことが可能です。
これらのインスタンスは、セッション状態データの操作を
指定した名前空間内に制限するはたらきをするもので、
Zend_Session_Namespace のインスタンスを作成する際に明示的に名前を指定します。
Zend_Session のインスタンスは、このようにしてローカルスコープの変数
(Zend_Session_Namespace インスタンスオブジェクト)
によるスコープの制限を行います。
これにより、セッション名前空間を効率的にローカルスコープに取り込みます。