Naify\Session\Storage クラス

implements IteratorAggregate, ArrayAccess, Traversable

セッションストレージ — Session Storage

セッション実データを保存・操作するクラス。 ArrayAccess / IteratorAggregate を実装し、配列ライクにアクセスできる。 Session::getStorage() 経由でのみインスタンス化される。

使用例

$storage = Session::getStorage('myNamespace', ttl: 600);
$storage->set('key', 'value');
$val = $storage->get('key');
$storage['arrayKey'] = 'arrayValue';

プロパティ

名前型説明
private $namespace string Session 内での保存先 namespace
private $gcTarget bool `Session::gc()` の削除対象に含めるかどうか
private $ttl int TTL(秒)。0 なら有効期限なしとして扱う
private $data array 実際に保持している namespace 内データ
private $expired bool いったん期限切れになった後に再延命しないためのフラグ
private $expireTime int UNIX タイムスタンプの有効期限

メソッド

メソッド説明
public __construct(string $namespace = default, int $ttl = 3600, bool $gcTarget = true): Session が内部的に生成する 1 個の Storage を初期化する
public update(): static 有効期限を更新する(アクセスごとに呼ばれる)
期限切れ後は延命せず、そのまま `expired` 状態を維持する。
public isExpired(): bool 有効期限が切れているか
public getTtl(): int TTL を取得する 8.4 → property hooks
public setTtl(int $ttl = 0): static TTL を設定する
値を変えた直後に expireTime を即更新したい場合は、続けて `update()` を呼ぶ。
無期限から有限期限へ変える場合は、変更時からの期限を設定する。
すでに期限切れの Storage は TTL を変更しても復活しない。
public setGCTarget(bool $gcTarget = true): static GC ターゲットを設定する
public isGCTarget(): bool GC ターゲットか 8.4 → property hooks
public destroy(): void このストレージを破棄する
public set(string $key, mixed $value): static 値をセットする
public get(string $key, mixed $default): mixed 値を取得する
public has(string $key): bool キーが存在するか
public delete(string $key): static 値を削除する
public pop(string $key, mixed $default): mixed 値を取得して削除する(フラッシュデータ用)
public offsetSet(mixed $offset, mixed $value): void 配列アクセスで値をセットする
public offsetExists(mixed $offset): bool 配列アクセスでキー存在を確認する
public offsetUnset(mixed $offset): void 配列アクセスで値を削除する
public offsetGet(mixed $offset): mixed 配列アクセスで値を取得する
public getIterator(): ArrayIterator 現在の保存データをイテレータとして返す
期限切れ後は空配列を返し、foreach 側で expired 判定を書かなくて済むようにする。