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教程》