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 メソッドはデフォルトのセッションインスタンス、またはnameにより区別された特定のインタンスを返します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$instance |
null
|
セッションインスタンスを識別するためのクッキーネーム (config/session.php で定義したもの) 。 |
|
返り値 |
mixed - セッションオブジェクト、または要求されたインスタンスが存在しない場合false。 |
例 |
$session = Session::instance();
$session = Session::instance('myappcookie');
|
set メソッドはセッション変数をセットします。
静的 |
はい |
パラメータ |
パラメータ |
型 |
デフォルト |
説明 |
$variable |
string|array |
必須 |
セットするセッション変数名または連想配列。 |
$value |
mixed |
null
|
セッション変数。
任意のデータ型を指定可能ですが、オブジェクトを格納する際はセッションデータがシリアライズされるため、その制約を受けることに注意してください。
|
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
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
|
要求された変数が存在しなかった場合のデフォルト値。 デフォルト値が指定されなかった場合nullが返されます。 |
|
返り値 |
mixed - 格納された $variableの型によります。 このメソッドは要求された変数が存在しない場合 null を返します。 |
例 |
$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 |
必須 |
削除するセッション変数名。 |
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::delete('userid');
Session::delete('array.varC');
|
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 |
例 |
Session::set_flash('step', 2);
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 |
必須 |
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. |
例 |
$step = Session::get_flash('step');
|
This method supports 'dot-notation' to retrieve an element from a multidimensional array.
keep_flash メソッドはセッションに格納されたフラッシュ変数を 'unrequested' な状態にリセットします。フラッシュ変数を取得し、次のページリクエストまで変数をパスします。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the flash variable to keep. |
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::keep_flash('step');
|
delete_flash メソッドは格納されたフラッシュ変数を削除します。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$variable |
必須 |
Name of the flash variable to delete. |
|
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::delete_flash('userid');
|
create メソッドは新しいセッションを生成します。セッションが既に存在する場合、セッションが新たに生成された際に破棄されます。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::create();
|
destroy メソッドは存在しているセッションを破棄します。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::destroy();
|
read メソッドは手動でセッションの読み込みを行います。セッションはセッションクラスの初期化時に自動的に読み込まれますので、通常このメソッドを使用する必要はありません。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::read();
|
write メソッドは手動でセッションを書き込みます。通常、セッションはスクリプト終了時に自動的に書き込まれます。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::write();
|
rotate メソッドは手動でセッションIDを変更します。
通常、セッションIDは設定により定期的に自動で変更されます。
例えばログインユーザーの権限を変更したような場合などにセキュリティ上の判断により
手動での変更を行いたいことがあるかもしれません。
静的 |
はい |
パラメータ |
None |
返り値 |
FuelCoreSession_Driver - is chainable |
例 |
Session::rotate();
|
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. |
例 |
$session_id = Session::key('session_id');
|