相信用過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:使用目前模型中定義的回呼方法
session函數是一個多元化操作函數,傳入不同的參數呼叫可以完成不同的功能操作,包括下面一些功能。 [-more-]
session初始化設定
如果session方法的name參數傳入數組則表示進行session初始化設置,例如:
session(array('name'=>'session_id','expire'=>3600)) ;
支援傳入的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('[start]'); // 啟動session
session('[destroy]'); // 銷毀sessionsession('[regenerate]'); // 重新產生session id
本地化支援
$_SESSION['name'] 變成$_SESSION['前綴']['name']
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']);
相當於:
session('?name');
isset($_SESSION['think']['name']);