QA@IT
«回答へ戻る

回答を投稿

ストレージの実装が、ArrayStorageはArrayObject、SessionStorageはArrayStorage(つまりArrayObjectの拡張)、SessionArrayStorageは$_SESSION配列ということだと思います。

SessionStorageを使うと、$_SESSIONそのものがSessionStorageオブジェクトになるけど、配列アクセスを実装しているので$_SESSIONへの直接アクセスが有効。
SessionArrayStorageは透過的に$_SESSIONへアクセスしているだけなので、当然$_SESSIONへの直接アクセスは有効です。

ArrayStorageはアクセス毎に値がセットされないので、カスタムストレージを用意する際の基本クラスとして用意されているのかな、という印象です。
ちゃんと使うとなると、StorageInitializationInterfaceを実装する必要があると思います。

あくまでストレージクラスなので、「どこに保存されるのか」が重要でないなら、あまり気にせずデフォルト(SessionArrayStorage)のままで良いような気がします。

ざっとソースとドキュメントを眺めてみた感想です。

ストレージの実装が、ArrayStorageはArrayObject、SessionStorageはArrayStorage(つまりArrayObjectの拡張)、SessionArrayStorageは$_SESSION配列ということだと思います。

SessionStorageを使うと、$_SESSIONそのものがSessionStorageオブジェクトになるけど、配列アクセスを実装しているので$_SESSIONへの直接アクセスが有効。
SessionArrayStorageは透過的に$_SESSIONへアクセスしているだけなので、当然$_SESSIONへの直接アクセスは有効です。

ArrayStorageはアクセス毎に値がセットされないので、カスタムストレージを用意する際の基本クラスとして用意されているのかな、という印象です。
ちゃんと使うとなると、StorageInitializationInterfaceを実装する必要があると思います。

あくまでストレージクラスなので、「どこに保存されるのか」が重要でないなら、あまり気にせずデフォルト(SessionArrayStorage)のままで良いような気がします。

ざっとソースとドキュメントを眺めてみた感想です。