HTTP協定是無狀態的,所以有了cookie和session技術,它們之間配合來維護一個狀態。在laravel中設定及取得session是非常方便的。下面,我們就一起來看看吧。
設定
session是儲存在伺服器上的,預設的session是儲存在伺服器上的檔案中。但該方法的效率不高,目前流行的是將session保存在redis或memcached第三方資料庫中。這些nosql的讀寫效率非常高,而且更容易管理。下面,看laravel是如何設定session的
laravel的session設定檔是在config/session.php中。此設定檔中可以配置session儲存的方式,有效時間等。
需要配置儲存方式為redis,則需要修改driver設定項,將其改為redis即可。除此之外,還支援本地儲存(預設)、關係型資料庫儲存等。
取得session值
首先來看如何取得session值,透過回應實例request的session方法即可取得,示範程式碼如下:
$request->session()->get('key');
get這個方法的第二個參數是用來設定預設值的,如果麼有取得到對應的session值,則傳回預設值,示範程式碼如下:
$request->session()->get('key', 'default');
第二個參數也可以是一個回呼函數,透過回呼函數傳回一個預設值
$request->session()->get('key', function () { return 'default'; });
除了上述的方法外,還可以透過全域的session函數來獲取,它們的用法是一致的。
也可以透過all方法來一次取得所有的session值,該方法傳回一個陣列:
$request->session()->all();
laravel也提供了一個方法來方便的判斷該session是否存在,使用has方法
if ($request->session()->has('key')) {}
另外還有一個exists方法,它與has的差別是has必須存在且不為空才回真,而exists只要存在就回傳真。
設定sesson值
設定session可以透過兩種方法,以下是示範程式碼:
$request->session()->put('key', 'val'); session(['key1' => 'val1', 'key2' => 'val2']);
刪除session值
可以透過forget方法來刪除指定的session,也可以透過flush來刪除所以session。以下是示範程式碼:
$request->session()->forget('k1'); $request->session()->forget(['k1', 'k2', 'k3']); $request->session()->flush();
相關推薦:《laravel教學》
以上是laravel中的session的CURD操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!