Blink Session管理

2018-11-25 22:01 更新

Blink Session 管理

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

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

Blink Session 服務(wù)

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

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

// 創(chuàng)建一個(gè)新的 Session 對(duì)象并保存,返回對(duì)象為 \blink\session\Session 類的實(shí)例
$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() 方法都返回一個(gè) blink\session\Session 類的實(shí)例。blink\session\Session 對(duì)象是一個(gè)以鍵值對(duì)形式 存在的 Session 數(shù)據(jù)集合,并提供了一些有用的方法來管理 Session 數(shù)據(jù)。

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

Blink Session 存儲(chǔ)

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

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)