LoginSignup
3
5

More than 3 years have passed since last update.

Lumen 6.2 でセッションを使う

Last updated at Posted at 2019-12-07

Lumen 6.2 には illuminate/session が含まれていますが、デフォルトで無効になっているので有効化させたときの手順メモ

※Lumen 8.2.1 でも同じ手順でセッションが有効になることを確認しました

動作環境

Windows10 Home Edition
XAMPP 7.2.17

$ php --version
PHP 7.2.17 (cli) (built: Apr  2 2019 20:11:25) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.17, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans

$ php artisan --version
Laravel Framework Lumen (6.2.0) (Laravel Components ^6.0)

設定

セッション関連クラスの登録

bootstrap/app.php に下記を追加

bootstrap/app.php
$app->singleton(Illuminate\Session\SessionManager::class, function ($app) {
    return $app->loadComponent('session', Illuminate\Session\SessionServiceProvider::class, 'session');
});

$app->singleton('session.store', function ($app) {
    return $app->loadComponent('session', Illuminate\Session\SessionServiceProvider::class, 'session.store');
});


$app->middleware([
     \Illuminate\Session\Middleware\StartSession::class,
]);

config/session.php の追加

プロジェクトのルートに config フォルダを作成。その中に session.php を配置

session.php の内容は Laravelconfig/session.php と同じ

laravel/session.php at master - laravel/laravel

セッションの保存フォルダの作成

storage/framework の下に sessions フォルダを作成する

$ mkdir storage\framework\sessions

動作確認

テストコード

routes/web.php
// Test Session
$router->get('/test', function (\Illuminate\Http\Request $request) {

    $counter = $request->session()->get('counter') ?: 0;
    $request->session()->put('counter', ++$counter);

    return response()->json([
        'session.counter' => $request->session()->get('counter')
    ]);
});

テストサーバー起動

$ php -S localhost:8000 -t public

アクセス

WEBブラウザで http://localhost:8000/test を開くと以下のように表示される

{"session.counter":1}

セッションが正常に機能していれば、リロードする度に数値がインクリメントされる

参考

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5