Blink Session管理

2018-11-25 22:01 更新

Blink Session 管理

Session 允許用戶(hù)在多個(gè)請(qǐng)求中共享數(shù)據(jù),在傳統(tǒng) PHP 程序中,我們可以通過(guò) $_SESSION 超全局變量來(lái)直接獲取 Session 數(shù)據(jù)。但是在 Blink 應(yīng)用中,$_SESSION 超全局變量是沒(méi)有用也不能被使用的,我們必須通過(guò) session 服務(wù)來(lái)獲取 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 來(lái)應(yīng)用提供 Session 服務(wù)的管理,在應(yīng)用中,我們可以通過(guò) session() 輔助方法來(lái)獲取 Session 服務(wù)的 實(shí)例,下面是幾個(gè)展示如何使用 Session 服務(wù)的例子:

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

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

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

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

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

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

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

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

Blink Session 存儲(chǔ)

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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)