国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

Session

2018-02-24 15:52 更新

自定義 session 驅(qū)動來擴展 Laravel 和擴展緩存系統(tǒng)一樣簡單。我們將會再一次使用 extend 方法來注冊自定義代碼:

Session::extend('mongo', function($app)
{
    // Return implementation of SessionHandlerInterface
});

在哪里擴展 Session

你應(yīng)該把 session 擴展代碼放置在 AppServiceProvider 的 boot 方法里。

實現(xiàn) Session 擴展

要注意我們的自定義緩存驅(qū)動應(yīng)該要實現(xiàn) SessionHandlerInterface 。這個接口只包含少數(shù)需要實現(xiàn)的簡單方法。一個基本的 MongoDB 實現(xiàn)會看起來像這樣:

class MongoHandler implements SessionHandlerInterface {

    public function open($savePath, $sessionName) {}
    public function close() {}
    public function read($sessionId) {}
    public function write($sessionId, $data) {}
    public function destroy($sessionId) {}
    public function gc($lifetime) {}

}

因為這些方法不像緩存的 StoreInterface 一樣容易理解,讓我們快速地看過這些方法做些什么:

  1. open 方法通常會被用在基于文件的 session 保存系統(tǒng)。因為 Laravel 附帶一個 file session 驅(qū)動,幾乎不需要在這個方法放任何東西。你可以讓它留空。PHP 要求我們?nèi)崿F(xiàn)這個方法,事實上明顯是個差勁的接口設(shè)計 (我們將會晚點討論它)。
  2. close 方法,就像 open 方法,通常也可以忽略。對大部份的驅(qū)動來說,并不需要它。
  3. read 方法應(yīng)該返回與給定 $sessionId 關(guān)聯(lián)的 session 數(shù)據(jù)的字串形態(tài)。當(dāng)你的驅(qū)動取回或保存 session 數(shù)據(jù)時不需要做任何序列化或進行其他編碼,因為 Laravel 將會為你進行序列化
  4. write 方法應(yīng)該寫入給定 $data 字串與 $sessionId 的關(guān)聯(lián)到一些永久存儲系統(tǒng),例如:MongoDB、 Dynamo、等等。
  5. destroy 方法應(yīng)該從永久存儲移除與 $sessionId 關(guān)聯(lián)的數(shù)據(jù)。
  6. gc 方法應(yīng)該銷毀所有比給定 $lifetime UNIX 時間戳記還舊的 session 數(shù)據(jù)。對于會自己過期的系統(tǒng)如 Memcached 和 Redis,這個方法可以留空。

當(dāng) SessionHandlerInterface 實現(xiàn)完成,我們準(zhǔn)備好要用 Session 管理者注冊它:

Session::extend('mongo', function($app)
{
    return new MongoHandler;
});

當(dāng) session 驅(qū)動已經(jīng)被注冊,我們可以在 config/session.php 配置文件使用 mongo 驅(qū)動。

注意: 記住,如果你寫了個自定義 session 處理器,請在 Packagist 分享它!

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號