Session クラス
セッションクラスを使用することでステートレスな Web 環境において、アプリケーションの状態を管理出来るようになります。
サーバー上の様々なストレージに変数を格納し、それらを次のページリクエストに再度呼び出すことが出来ます。
本ページに記載されている静的メソッドは driver で設定されたセッションドライバーを使用します。
auto_initialize を true に設定した場合、セッションはセッションクラスロード時に初期化されます。
false に設定した場合、下記のメソッドのいずれかを使用するか、またはセッションインスタンスを初期化するためにセッションインスタンスをマニュアルで開始する必要があります。
アプリケーションがセッションのサポートをを必要とする場合、セッションクラスを "always_load" とするか、必ず(ベース)コントローラーがロードするようにすべきです。
ロードを行い、セッションを auto_initialize とせず、かつどのセッションメソッドも使用しなかった場合、セッションはリフレッシュされません!
このことにより、期限切れのセッションによってアプリケーションに予期せぬ挙動を引き起こす可能性があります。
ガベージコレクション
セッションドライバーは不要なエントリーを削除するためのガベージコレクション機構を持ちます。
APC、Memcached、Redis等のexpireをビルトインでサポートするストレージの場合、その機能を使用し、
自動で不要なキャッシュエントリーを期限切れとしてます。
データベースやファイルシステムのようにそれを行わないストレージの場合、 gc_probability の設定によりガベージコレクションが必要か判断します。
必要な場合、ユーザーにページが送られた後、シャットダウンイベントにて実行されます。
この方法のよくない点は、処理に時間がかかる場合、GCが完了するまでページが "loading…" となることです。
セッションを使用する際は、 必ず app/config/config.php のタイムゾーン設定およびまたは
php.ini の設定をあなたのサーバーのタイムゾーン設定と合わせてください。
クッキーの有効期限タイムスタンプがGMTとなり、タイムゾーンのミスマッチが有効期限の計算を狂わせると、期限切れでない適切なセッションクッキーがブラウザ到達時に期限切れとして扱われ
まったくセットされなくなります。
instance($instance = null)
instance メソッドはデフォルトのセッションインスタンス、または name により区別された特定のインタンスを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$instance |
null
|
セッションインスタンスを識別するためのクッキーネーム (config/session.php で定義したもの) 。 |
|
返り値 |
mixed - セッションオブジェクト、または要求されたインスタンスが存在しない場合 false 。 |
例 |
// デフォルトのセッションインスタンスを取得 ('driver'configで設定したもの).
$session = Session::instance();
// 明示的にセッションインスタンスを取得
$session = Session::instance('myappcookie');
|
set($variable, $value = null)
set メソッドはセッション変数をセットします。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$variable |
string|array |
必須 |
セットするセッション変数名または連想配列。 |
$value |
mixed |
null
|
セッション変数。
任意のデータ型を指定可能ですが、オブジェクトを格納する際はセッションデータがシリアライズされるため、その制約を受けることに注意してください。
|
|
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// userid をセッションに格納
Session::set('userid', $userid);
// より複雑な値を格納することも出来ます
Session::set('array', array('varA', 'varB', 'varC' => array('val1', 'val2'));
// 配列を使って複数の値を同時に格納することも出来ます
Session::set(array(
'userid' => $userid,
'has_cookies' => function()
{
return (bool) \Cookie::get('has_them', false);
}
));
// 呼び出しをチェインさせて値をセットすることも出来ます
Session::set('userid', $userid)->set('foo', 'bar');
|
get($variable = null, $default = null)
get メソッドは格納済みのセッション変数を取り出します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
null
|
取得するセッション変数名。指定されなかった場合、すべてのセッション変数が返されます。 |
$default |
null
|
要求された変数が存在しなかった場合のデフォルト値。 デフォルト値が指定されなかった場合 null が返されます。 |
|
返り値 |
mixed - 格納された $variableの型によります。 このメソッドは要求された変数が存在しない場合 null を返します。 |
例 |
// セッションから userid を取得します
$userid = Session::get('userid');
if ( $userid === false )
{
echo "no user is logged in";
}
// 配列をまるごと取得出来ます
$arr = Session::get('array');
// または指定したキーで配列の値を取得出来ます
$arr = Session::get('array.varC');
// すべてのセッション変数を取得します
$vars = Session::get();
|
delete($variable)
delete メソッドは格納済のセッション変数を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
削除するセッション変数名。 |
|
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションから userid を削除します
Session::delete('userid');
// 指定したキーで配列の値を削除することも出来ます
Session::delete('array.varC');
|
set_flash($variable, $value = null)
set_flash メソッドはセッションにフラッシュ変数をセットします。フラッシュ変数は限定されたライフスパンを持ちます。設定に依存し、次のページリクエストか取り出された後に削除されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
セッションにセットするフラッシュ変数名 |
$value |
null
|
フラッシュ変数の値。
フラッシュ変数はいかなるデータ型も格納できます。しかしセッションにオブジェクトを格納するときは注意してください。セッションのデータはシリアライズされるため、オブジェクトのシリアライズは制限されます。
|
|
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// 次のページリクエストにどのステップを実行するか伝えます
Session::set_flash('step', 2);
// また、より複雑な値を格納できます
Session::set_flash('array', array('varA', 'varB', 'varC' => array('val1', 'val2')));
|
このメソッドは多次元配列へ要素を保存するのに、限定的な「ドット表記」をサポートしています。トップレベル要素のみ配列になり、
と同時にセッション変数は解放されます。
get_flash($variable, $default = null, $expire = false)
get_flash メソッドはセッションからフラッシュ変数を取り出します。フラッシュ変数は限定されたライフスパンを持ちます。設定に依存し、次のページリクエストか取り出された後に解放されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
取得するセッション変数の名前 |
$default |
null
|
要求した値が存在しない場合のデフォルト値。もしデフォルト値が指定されなかった場合 null を返します。 |
$expire |
false
|
もし true なら、同じリクエストで生成されたフラッシュ変数であっても直ちに解放されます。 |
|
返り値 |
mixed - 格納された $variable の型によります。 このメソッドは要求した変数が存在しない場合 null を返します。 |
例 |
// どのステップを実行するか調べます。
$step = Session::get_flash('step');
|
このメソッドは多次元配列から要素を取得するのに「ドット表記」をサポートしています。
keep_flash($variable)
keep_flash メソッドはセッションに格納されたフラッシュ変数を 'unrequested' な状態にリセットします。フラッシュ変数を取得し、次のページリクエストまで変数をパスします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
維持するフラッシュ変数の名前 |
|
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// 次のページリクエストまでステップの値を維持する。
Session::keep_flash('step');
|
delete_flash($variable)
delete_flash メソッドは格納されたフラッシュ変数を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
削除するフラッシュ変数の名前 |
|
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションからステップを削除する
Session::delete_flash('userid');
|
create()
create メソッドは新しいセッションを生成します。セッションが既に存在する場合、セッションが新たに生成された際に破棄されます。
静的 |
はい |
パラメータ |
なし |
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// 新しいセッションを生成する
Session::create();
|
destroy()
destroy メソッドは存在しているセッションを破棄します。
静的 |
はい |
パラメータ |
なし |
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションを破棄する
Session::destroy();
|
read()
read メソッドは手動でセッションの読み込みを行います。セッションはセッションクラスの初期化時に自動的に読み込まれますので、通常このメソッドを使用する必要はありません。
静的 |
はい |
パラメータ |
なし |
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションを読み込む
Session::read();
|
write()
write メソッドは手動でセッションを書き込みます。通常、セッションはスクリプト終了時に自動的に書き込まれます。
静的 |
はい |
パラメータ |
なし |
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションを書き込む
Session::write();
|
rotate()
rotate メソッドは手動でセッションIDを変更します。
通常、セッションIDは設定により定期的に自動で変更されます。
例えばログインユーザーの権限を変更したような場合などにセキュリティ上の判断により
手動での変更を行いたいことがあるかもしれません。
静的 |
はい |
パラメータ |
なし |
返り値 |
FuelCoreSession_Driver - メソッドチェーン可能 |
例 |
// セッションIDを変更する
Session::rotate();
|
key()
key メソッドはユニークにセッションを識別する、
セッションキー要素を取得します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$name |
任意 |
キー要素の名前。デフォルトでは 'session_id' が設定されています。
'ip_hash'、 'created'、 'updated'、
'user_agent' そして 'payload' が利用可能です。
|
|
返り値 |
mixed - 要素の値、もしくは要求した要素が存在しなければ false を返します。 |
例 |
// 現在のセッションIDを取得する
$session_id = Session::key('session_id');
|