設定
HTTP駆動のアプリケーションはステートレスですから、リクエスト間に渡り、情報を保存するセッションが提供されています。Laravelは美しく、統一されたAPIでバックエンドの様々なセッションを用意しています。人気のあるMemcachedやRedis、データベースも最初からサポートしています。
セッションの設定はapp/config/session.php
にあります。このファイルのオプションには詳しくコメントがついていますので、確認して下さい。ほとんどアプリケーションでうまく動作するため、Laravelはfile
セッションドライバーをデフォルトとして設定に使用します。
予約キー
Laravelは内部で、flash
セッションキーを使用しています。そのため、この名前のセッションアイテムを追加しないでください。
セッションの使用
セッションにアイテムを保存する
Session::put('key', 'value');
値を配列セッション値として保存する
Session::push('user.teams', 'developers');
セッションからアイテムを取得する
$value = Session::get('key');
アイテムかデフォルト値を取得する
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
アイテム取得後に削除する
$value = Session::pull('key', 'default');
セッションから全データを取得する
$data = Session::all();
セッションにアイテムが存在するか確認する
if (Session::has('users'))
{
//
}
セッションからアイテムを削除する
Session::forget('key');
セッションから全てのアイテムを削除する
Session::flush();
セッションIDを再生成する
Session::regenerate();
フラッシュデーター
次のリクエストの間だけアイテムを保存したいこともあります。Session::flash
メソッドが使えます。
Session::flash('key', 'value');
現在のフラッシュデーターの寿命を次のリクエストまで延長する
Session::reflash();
一部のフラッシュデーターの寿命を延長する
Session::keep(array('username', 'email'));
データベースセッション
database
セッションを使用する場合、セッションのアイテムを含んだテーブルを用意してください。以下にサンプルのSchema
宣言を紹介します。
Schema::create('sessions', function($table)
{
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});
もちろん、Artisanコマンドのsession:table
で、このマイグレーションを生成することも可能です!
php artisan session:table
composer dump-autoload
php artisan migrate
セッションドライバー
セッション「ドライバー」は、それぞれのリクエストのセッションデーターをどこに保存しておくかを定義します。Laravelでは、最初から素晴らしいドライバーが用意されています。
file
- セッションはapp/storage/sessions
の中に保存されます。cookie
- セッションはセキュアに暗号化されたクッキーに保存されます。database
- セッションはアプリケーションで使用されるデータベースに保存されます。memcached
/redis
- セッションは指定された、早い、キャッシュベースの保存領域に保持されます。array
- セッションは、単にPHPの配列として保存されるだけです。リクエスト間で持続しません。
注目:配列(array)ドライバーは、通常ユニットテストを実行するため使用されます。そのため、そのため、セッションデーターは保持されません。