21.5. 動作原理

Zend_Session_Core は、$_SESSION へのすべてのアクセスを、典型的なシングルトンパターンである getInstance() でカプセル化しています。一般に、Zend_Session コンポーネントを使用する開発者は $_SESSION を直接操作すべきではありません。 しかし、既存のコードを Zend_Session と共存させることも可能です。 その場合は、Zend_Session の名前空間を使用することで、既存のコードが $_SESSION で使用しているキーとだぶらないようにします。

グローバルなセッションの管理は、Zend_Session_Core で定義されている 静的な "クラス" メソッド群を使用します。これは、Zend_Session に関連するコンポーネントが管理するすべてのセッションに影響をおよぼします。 ほとんどの開発者は、これらの静的メソッドを使用する必要はないでしょう。

$_SESSION とは異なり、Zend_Session はすべてのセッションデータを別々の名前空間に分離します。 データを PHP の配列に保存し、その配列を $_SESSION に保存するのです。この配列のキーが名前空間となります。 Zend_Session のインスタンスを作成すると、選択した名前空間用の、 一意でない "ウィンドウ" が返されます。 指定したキー (名前空間名) に関連付けられる名前空間はひとつだけですが、 複数の "ウィンドウ" で同じ名前空間を使うことが可能です。 これらのインスタンスは、セッション状態データの操作を 指定した名前空間内に制限するはたらきをするもので、 Zend_Session のインスタンスを作成する際に明示的に名前を指定します。 Zend_Session のインスタンスは、このようにしてローカルスコープの変数 (インスタンスオブジェクト) によるスコープの制限を行います。 これにより、セッション名前空間を効率的にローカルスコープに取り込みます。