Laravelでsession(セッション)を扱う方法【初心者向け】
初心者向けにLaravelでsession(セッション)を扱う方法について解説しています。フレームワークからsessionを管理する方法を学びましょう。ユーザーごとのデータを保存する上で必要な処理なので、使い方を理解しておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Laravelでsessionを扱う方法について解説します。
Webアプリケーションを開発する上で欠かせない知識になるので、使い方を理解しておきましょう。
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。
今回は、Laravelに関する内容だね!
どういう内容でしょうか?
Laravelでsessionを使う方法について詳しく説明していくね!
お願いします!
sessionとは
Webアプリケーションでは、リクエストをまたがったユーザーの識別やユーザー毎のデータの保存を行う必要が出てきます。
そのために、Laravelのようなフレームワークは、セッションという仕組みを提供しています。
セッションにはデータ(キーと値のペア)を保存できます。
Laravelは様々なバックエンドのセッションを提供しており、config/session.phpで設定できます。
デフォルトで設定されているfileセッションは、storage/framework/sessions/ディレクトリ内のファイルにセッションを保存します。実稼働環境ではdatabaseセッションやredisセッションなどの使用を考慮しますが、開発環境ではデフォルトのfileセッションで十分です。
Laravelでsessionを利用する方法
Laravelでセッションを操作するには、主に2つの方法があります。使い方は似ています。
一つはアクションに渡されるRequestインスタンスを経由する方法です。
IlluminateSessionStoreインスタンスが使われます。
// 指定したデータをセッションから取得する // キーが存在していない場合に返すデフォルト値を第2引数に指定できる $value = $request->session()->get('key’); $value = $request->session()->get('key', 'default’); $value = $request->session()->get('key', function () { return 'default'; }); // セッション中の全データを取得する $data = $request->session()->all(); // 指定したデータがセッションに存在するかを調べる if ($request->session()->exists('key')) { // 存在する } if ($request->session()->has('key')) { // 存在しnullではない } // セッションへデータを保存する $request->session()->put('key', 'value'); $request->session()->put(['key1' => 'value1', 'key2' => ‘value2']); // 指定したデータをセッションから取得後、そのデータを削除する $value = $request->session()->pull('key', 'default’); // 指定したデータをセッションから削除する $request->session()->forget('key'); // セッションから全データを削除する $request->session()->flush();
もう一つはグローバルなヘルパ関数session( )を使用する方法です。
IlluminateSessionSessionManagerインスタンスが使われます。
// 指定したデータをセッションから取得する // キーが存在していない場合に返すデフォルト値を第2引数に指定できる $value = session('key’); $value = session('key', 'default'); $value = session('key', function () { return 'default'; }); $value = session()->get(‘key'); $value = session()->get('key', 'default'); $value = session()->get('key', function () { return 'default'; }); // セッション中の全データを取得する $data = session()->all(); // 指定したデータがセッションに存在するかを調べる if (session()->exists('key')) { // 存在する } if (session()->has('key')) { // 存在しnullではない } // セッションへデータを保存する session(['key1' => 'value1', 'key2' => ‘value2']); session()->put(['key1' => 'value1', 'key2' => 'value2']); // 指定したデータをセッションから取得後、そのデータを削除する $value = session()->pull('key', 'default’); // 指定したデータをセッションから削除する session()->forget('key'); // セッションから全データを削除する session()->flush();
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
実際にLaravelでsessionを使ってみよう
ごく簡単な例で、リクエストをまたいでデータが保存されることを確認してみましょう。
以下のようなルートを定義します。
routes/web.php Route::get('/put-data', function () { session()->put(['email' => 'user@example.com']); return session()->get('email'); }); Route::get(‘/list-data', function () { return session()->all(); });
まず、ブラウザで /put-dataにアクセスすると1つ目のルートが実行され、セッションにデータが保存されたことを確認できます。
user@example.com
次に、ブラウザで /list-data にアクセスすると2つ目のルートが実行され、先ほど保存されたデータが残っていることを確認できます。
{"email":"user@example.com","_previous":{"url":"http://localhost:8000/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}
他にもデータがありますが、これらは自動的に保存されたデータです。Laravel自体もセッションを利用していることがわかります。
この記事を監修してくれた方
杉本 隆也(すぎもとたかや) WebアプリやiOSアプリの受託開発をしながら、 開発実績: マッチングサービス、カスタマーサービス、決済ツール、SNSアプリ、音遊びアプリなど。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。