<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 1、簡介 由于HTTP驅動的應用是無狀態的,所以我們使用session來存儲用戶請求信息。[Lumen](http://laravelacademy.org/tags/lumen "View all posts in Lumen")通過干凈、統一的API處理后端各種有效session驅動,目前支持的流行后端驅動包括[Memcached](http://memcached.org/)、[Redis](http://redis.io/)和數據庫。 #### 1.1 開啟Session 要開啟session,你需要取消`bootstrap/app.php`文件中`$app->middleware()`方法調用前的注釋。 #### 1.2 配置 session驅動由.env文件中的配置選項SESSION_DRIVER來控制。默認情況下,Lumen使用的`session`驅動為memcached,這對許多應用而言是沒有什么問題的。在生產環境中,你可以考慮使用`memcached`或者`redis`驅動以便獲取更快的session性能。 `session`驅動定義請求的session數據存放在哪里,Lumen可以處理多種類型的驅動: * `file`?– session數據存儲在?`storage/framework/sessions`目錄下; * `cookie`?– session數據存儲在經過加密的安全的cookie中; * `database`?– session數據存儲在數據庫中 * `memcached`?/?`redis`?– session數據存儲在memcached/redis中; * `array`?– session數據存儲在簡單PHP數組中,在多個請求之間是非持久化的。 > 注意:數組驅動通常用于運行測試以避免session數據持久化。 #### 1.3 Session驅動預備知識 **數據庫** 當使用`database`session驅動時,需要設置表包含`session`項,下面是該數據表的表結構聲明: ~~~ Schema::create('sessions', function ($table) { $table->string('id')->unique(); $table->text('payload'); $table->integer('last_activity'); }); ~~~ Redis 在Lumen中使用Redis?`session`驅動前,需要通過Composer安裝`predis/predis`包以及illuminate/redis包。 #### 1.4 其它Session相關問題 Lumen框架內部使用`flash`?session鍵,所以你不應該通過該名稱添加數據項到session。 ## 2、基本使用 **訪問session** 首先,我們來訪問session,我們可以通過HTTP請求訪問session實例,可以在控制器方法中通過類型提示引入請求實例,記住,控制器方法依賴通過Lumen[服務容器](http://laravelacademy.org/post/471.html)注入: ~~~ <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserController extends Controller{ /** * 顯示指定用戶的屬性 * * @param Request $request * @param int $id * @return Response */ public function showProfile(Request $request, $id) { $value = $request->session()->get('key'); // } } ~~~ 從session中獲取數據的時候,還可以傳遞默認值作為第二個參數到`get`方法,默認值在指定鍵在session中不存在時返回。如果你傳遞一個閉包作為默認值到`get`方法,該閉包會執行并返回執行結果: ~~~ $value = $request->session()->get('key', 'default'); $value = $request->session()->get('key', function() { return 'default'; }); ~~~ 如果你想要從session中獲取所有數據,可以使用`all`方法: ~~~ $data = $request->session()->all(); ~~~ 還可以使用全局的PHP函數`session`來獲取和存儲session中的數據: ~~~ $app->get('home', function () { // 從session中獲取數據... $value = session('key'); // 存儲數據到session... session(['key' => 'value']); }); ~~~ **判斷session中是否存在指定項** `has`方法可用于檢查數據項在session中是否存在。如果存在的話返回`true`: ~~~ if ($request->session()->has('users')) { // } ~~~ **在session中存儲數據** 獲取到session實例后,就可以調用多個方法來與底層數據進行交互,例如,`put`方法存儲新的數據到session中: ~~~ $request->session()->put('key', 'value'); ~~~ **推送數據到數組session** `push`?方法可用于推送數據到值為數組的session,例如,如果`user.teams`鍵包含團隊名數組,可以像這樣推送新值到該數組: ~~~ $request->session()->push('user.teams', 'developers'); ~~~ **獲取并刪除數據** `pull`方法將會從session獲取并刪除數據: ~~~ $value = $request->session()->pull('key', 'default'); ~~~ **從session中刪除數據項** `forget`方法從session中移除指定數據,如果你想要從session中移除所有數據,可以使用`flush`方法: ~~~ $request->session()->forget('key'); $request->session()->flush(); ~~~ **重新生成Session ID** 如果你需要重新生成session ID,可以使用`regenerate`方法: ~~~ $request->session()->regenerate(); ~~~ #### 2.1 一次性數據 有時候你可能想要在session中存儲只在下個請求中有效的數據,可以通過`flash`方法來實現。使用該方法存儲的session數據只在隨后的HTTP請求中有效,然后將會被刪除: ~~~ $request->session()->flash('status', 'Task was successful!'); ~~~ 如果你需要在更多請求中保持該一次性數據,可以使用`reflash`方法,該方法將所有一次性數據保留到下一個請求,如果你只是想要保存特定一次性數據,可以使用`keep`方法: ~~~ $request->session()->reflash(); $request->session()->keep(['username', 'email']); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看