Naify\Session\Storage クラス
セッションストレージ — 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 判定を書かなくて済むようにする。 |