一些常用的PHP小知識
nl2br(),php內建函數,可以將string中的\n替換為<br />,建議不要再入庫的時候進行處理,而在向瀏覽器發送資料的之前再進行處理。
empty(),檢測$_GET,$_POST中的某項是否不為空白,使用empty函數而不是is_set函數,因為用戶端提交Null 字元串的時候,is_set函數會返回true。
ThinkPHP對RBAC的支援(Role-Based Access Control)
RBAC是Role-Based Access Control的簡寫,也就是角色型存取控制。
ThinkPHP中關於AJAX返回資料
Think.Core.Action.class.php中提供了ajaxReturn方法,可以根據設定檔中的DEFAULT_AJAX_RETURN參數,返回各種編碼的資料,使用ajax通訊時盡量調用該函數對資料進行編碼,以後想換資料編碼格式,可以很方便,另外返回編碼後的資料時,可以附加一個status狀態值,一個info資訊值。
protected function ajaxReturn($data,$info='',$status=1,$type='')
{
// 保證AJAX返回後也能儲存日誌
if(C('LOG_RECORD')) Log::save();
$result = array();
$result['status'] = $status;
$result['info'] = $info;
$result['data'] = $data;
if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
if(strtoupper($type)=='JSON') {
// 返回JSON資料格式到用戶端 包含狀態資訊
header("Content-Type:text/html; charset=utf-8");
exit(json_encode($result));
}elseif(strtoupper($type)=='XML'){
// 返回xml格式資料
header("Content-Type:text/xml; charset=utf-8");
exit(xml_encode($result));
}elseif(strtoupper($type)=='EVAL'){
// 返回可執行檔js指令碼
header("Content-Type:text/html; charset=utf-8");
exit($data);
}else{
// TODO 增加其它格式
}
}
用戶端JS解析資料時,比如JQuery的getJSON方法,需要的實際資料是json.data(假設json為getJSON方法的回呼函數的參數)