首頁 > php教程 > PHP开发 > 如何讓thinkphp在模型中自動完成session賦值小教學

如何讓thinkphp在模型中自動完成session賦值小教學

高洛峰
發布: 2016-12-22 10:34:39
原創
1172 人瀏覽過

相信用過thinkphp的使用者都知道thinkphp的模型可以完成很多輔助功能,例如自動驗證、自動完成等,今天在開發中遇到自動完成中需要取得session值

然後自動賦值的功能,具體看程式碼;

class ArticlelModel extends Model {
   
  protected $_auto = array (
    array('addtime','time',1,'function'),
    array('username','getName',1,'callback')
  );
   
  //这个函数获取session里的name值
  protected function getName(){
    return $_SESSION["name"];
  }
}
登入後複製

  

這裡需要注意最後一個參數function和callback的區別;
function:使用函數,會自動去Common/common.php去尋找對應的函數;
callback:使用目前模型中定義的回呼方法

如何讓thinkphp在模型中自動完成session賦值小教學

session函數是一個多元化操作函數,傳入不同的參數呼叫可以完成不同的功能操作,包括下面一些功能。 [-more-]
session初始化設定
如果session方法的name參數傳入數組則表示進行session初始化設置,例如:
session(array('name'=>'session_id','expire'=>3600)) ;

支援傳入的session參數包括:

如何讓thinkphp在模型中自動完成session賦值小教學

Session初始化設定方法無需手動調用,在App類別的初始化工作結束後會自動調用,通常專案只需要配置SESSION_OPTIONS參數即可,SESSION_OPTIONS參數的設定是一個數組,支援的索引名和前面的session初始化參數相同。

預設情況下,初始化之後系統會自動啟動session,如果不希望系統自動啟動session的話,可以設定SESSION_AUTO_START為false,例如:

'SESSION_AUTO_START' =>false
登入後複製

   

自動啟動後可以項目的公用檔案或在控制器中透過手動呼叫session_start或session('[start]') 啟動session。
session賦值
Session賦值比較簡單,直接使用:

session('name','value'); //设置session
登入後複製

   

相當於:

$_SESSION['name'] = 'value';
登入後複製

  

可以使用

session('?name');

用於判斷名稱為name的session值是否已經設定

相當於:

isset($_SESSION['name']);

session管理
session方法支援一些簡單的session管理操作,用法如下:

session('[操作名稱]');


支援的操作名稱包括:



使用範例如下:

session('[pause]'); // 暫停sessionsion寫入

session('[start]'); // 啟動session

session('[destroy]'); // 銷毀session

session('[regenerate]'); // 重新產生session id如何讓thinkphp在模型中自動完成session賦值小教學



本地化支援

如果在初始化session設定的時候傳入prefix參數或單獨設定了SESSION_PREFIX參數的話,就可以啟用本地化session管理支援。啟動本地化session後,所有的賦值、取值、刪除、判斷操作都會自動支援本地化session。


本地化session支援開啟後,產生的session資料格式由原來的

$_SESSION['name'] 變成$_SESSION['前綴']['name']

假設前綴設為think,則賦值操作:

session('name','value');  //設定session

相當於:

$_SESSION['think']['name'] = 'value';

取值操作:

$value = session('name');

相當於使用:

$value = $_SESSION['think']['name'];

刪除操作:

session('name',null);

相當於:

unset($_SESSION['think']['name']);

清空操作:

session(null);

相當於:

unset($_SESSION['think']);
相當於:

unset($_SESSION['think']); :

session('?name');

相當於:

isset($_SESSION['think']['name']);

更多如何讓thinkphp在模型中自動完成session賦值小教程相關文章賦值小教程相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板