天天看點

Yii之session

概述

這裡隻是簡單講一下用法,如果想更詳細的了解,去看 官方手冊 比較好。

和請求和響應類似, 預設可通過為yii\web\Session 執行個體的session 應用元件 來通路sessions。

利用Yii操作session

// 首先,加載session元件
$session = Yii::$app->session();

// 檢查session是否開啟
if($session->isActive){
    // session已經打開
}

// 開啟session
$session->open();

// 設定name的session值為張三
$session->set('name','張三');
// 跟以下語句效果相同
$_SESSION['name'] = '張三';

// 擷取session中name的值
$session->get('name','my');
// 擷取時,會自動打開session,無需手動。而且如果name值不存在時,會預設輸出'my'

// 移除session中的name變量
$session->remove('name');

// 移除全部的session變量
$session->removeAll();

// 檢視session是否存在name變量
$session->has('name');

// 關閉session
$session->close();

// 銷毀session中所有已經注冊的資料
$session->destroy();
           

Flash 資料

簡單介紹

Flash資料是一種特别的session資料,它一旦在某個請求中設定後, 隻會在下次請求中有效,然後該資料就會自動被删除。 常用于實作隻需顯示給終端使用者一次的資訊, 如使用者送出一個表單後顯示确認資訊。

實作方式
// 首先,加載session元件
$session = Yii::$app->session();

// 設定名為'success' flash 資訊
$session->setFlash('success','This is success!');

// 擷取并顯示'success' flash 資訊
echo $session->getFlash('success');

// 檢視'success' flash 資訊是否存在
if($session->hasFlash('success')){
    // 存在,判斷後,自動删除
}

// 擷取所有的 flash 資訊
$data = $session->getAllFlashes();

// 移除 'success' flash 資訊
$session->removeFlash('success');

// 移除所有的 flash 資訊
$session->removeAllFlash();
           
// 首先,加載session元件
$session = Yii::$app->session();

// 設定名為'success' flash 資訊
$session->setFlash('success','This is success!');

// 在名稱為"success"的flash資訊增加資料
$session->addFlash('success','I love you!');
$session->addFlash('success','I miss you!');
$session->addFlash('success','I want you!');

// 擷取并顯示'success' flash 資訊
$data = $session->getFlash('success');
var_dump($data); 
/* 會以數組的方式呈現
array(4) { 
    [0]=> string(16) "This is success!" 
    [1]=> string(11) "I love you!" 
    [2]=> string(11) "I miss you!" 
    [3]=> string(11) "I want you!" 
}*/