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 - is chainable |
例 |
// 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 - is chainable |
例 |
// セッションから userid を削除します
Session::delete('userid');
// 指定したキーで配列の値を削除することも出来ます
Session::delete('array.varC');
|
set_flash($variable, $value = null)
set_flash メソッドはセッションにフラッシュ変数をセットします。フラッシュ変数は限定されたライフスパンを持ちます。設定に依存し、次のページリクエストか取り出された後に削除されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the session flash variable to set. |
$value |
null
|
The session flash variables value.
This can be any data type, but pay attention when storing objects in the session, as session data is serialized, and there are restrictions to serializing an object.
|
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// tell the next page request which step to process
Session::set_flash('step', 2);
// you can also store more complex values
Session::set_flash('array', array('varA', 'varB', 'varC' => array('val1', 'val2'));
|
This method supports limited 'dot-notation' to save an element in a multidimensional array. Only the top-level is versioned, the
entire multidimensional array will expire at the same time.
get_flash($variable, $default = null, $expire = false)
get_flash メソッドはセッションからフラッシュ変数を取り出します。フラッシュ変数は限定されたライフスパンを持ちます。設定に依存し、次のページリクエストか取り出された後に削除されます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the session variable to get. |
$default |
null
|
Default value to return in case the requested variable does not exist. If no default is given, the method will return null. |
$expire |
false
|
if true, the session variable expires immediately, even if it is set in the same request. |
|
返り値 |
mixed - Dependent on the type of the stored $variable. The method returns null if the requested variable does not exist. |
例 |
// find out which step to process
$step = Session::get_flash('step');
|
This method supports 'dot-notation' to retrieve an element from a multidimensional array.
keep_flash($variable)
keep_flash メソッドはセッションに格納されたフラッシュ変数を 'unrequested' な状態にリセットします。フラッシュ変数を取得し、次のページリクエストまで変数をパスします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the flash variable to keep. |
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// keep the step value for one more page request
Session::keep_flash('step');
|
delete_flash($variable)
delete_flash メソッドは格納されたフラッシュ変数を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the flash variable to delete. |
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// delete the step from the session
Session::delete_flash('userid');
|
create()
create メソッドは新しいセッションを生成します。セッションが既に存在する場合、セッションが新たに生成された際に破棄されます。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// create a new session
Session::create();
|
destroy()
destroy メソッドは存在しているセッションを破棄します。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// destroy a session
Session::destroy();
|
read()
read メソッドは手動でセッションの読み込みを行います。セッションはセッションクラスの初期化時に自動的に読み込まれますので、通常このメソッドを使用する必要はありません。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// read the session
Session::read();
|
write()
write メソッドは手動でセッションを書き込みます。通常、セッションはスクリプト終了時に自動的に書き込まれます。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// write the session
Session::write();
|
rotate()
rotate メソッドは手動でセッションIDを変更します。
通常、セッションIDは設定により定期的に自動で変更されます。
例えばログインユーザーの権限を変更したような場合などにセキュリティ上の判断により
手動での変更を行いたいことがあるかもしれません。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
// rotate the session
Session::rotate();
|
key()
key メソッドはユニークにセッションを識別する、
セッションキー要素を取得します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$name |
optional |
Name of the key element. By default, it is set to 'session_id'.
Other elements that may be available are 'ip_hash', 'created', 'updated'
'user_agent' and 'payload'.
|
|
返り値 |
mixed - element value, or false if the requested element does not exist. |
例 |
// get the current session id
$session_id = Session::key('session_id');
|