一些常用的PHP小知识
nl2br(),php内置函数,可以将string中的\n替换为<br />,建议不要再入库的时候进行处理,而在向浏览器发送数据的之前再进行处理。
empty(),检测$_GET,$_POST中的某项是否不为空,使用empty函数而不是is_set函数,因为客户端提交空字符串的时候,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方法的回调函数的参数)