Blink Session管理

2018-11-25 22:01 更新

Blink Session 管理

Session 允許用戶在多個請求中共享數(shù)據(jù),在傳統(tǒng) PHP 程序中,我們可以通過 $_SESSION 超全局變量來直接獲取 Session 數(shù)據(jù)。但是在 Blink 應用中,$_SESSION 超全局變量是沒有用也不能被使用的,我們必須通過 session 服務來獲取 Sesson 數(shù)據(jù)。

另外,由 PHP 提供的 Session 相關函數(shù)也不能出現(xiàn)在 Blink 應用中,以避免出現(xiàn)一些未知的 Bug 或者未定義的行為。

Blink Session 服務

Blink 實現(xiàn)了 blink\session\Manager 來應用提供 Session 服務的管理,在應用中,我們可以通過 session() 輔助方法來獲取 Session 服務的 實例,下面是幾個展示如何使用 Session 服務的例子:

// 獲取 Session 服務的實例
$manager = session();

// 創(chuàng)建一個新的 Session 對象并保存,返回對象為 \blink\session\Session 類的實例
$session = $manager->put($data);

// 獲取新創(chuàng)建 Session 的 Session ID
$sessionId = $session->id;

// 通過 Session ID 獲取 Session 數(shù)據(jù)
$session = $manager->get($sessionId);

// 通過 Session ID 寫入新的 Session 數(shù)據(jù)
$manager->set($sessionId, $newData);

// 通過 Session ID 銷毀 Session 數(shù)據(jù)
$manager->destroy($sessionId);

在上面的例子中, put() 和 get() 方法都返回一個 blink\session\Session 類的實例。blink\session\Session 對象是一個以鍵值對形式 存在的 Session 數(shù)據(jù)集合,并提供了一些有用的方法來管理 Session 數(shù)據(jù)。

在 Blink 中,我們也可以實現(xiàn)自定義的 Session 服務,唯一要做的就是實現(xiàn) blink\session\Contract 接口并在配置文件中配置好該服務。

Blink Session 存儲

默認情況下,Blink 采用文件來存儲 Session 數(shù)據(jù)。我們可以通過實現(xiàn)自定義的 Session 存儲類來改變這個行為,實現(xiàn)自定義的存儲類需要實現(xiàn) blink\session\StorageContract 這個接口,更多可以參考 blink\session\FileStorage 類的實現(xiàn)。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號