php实现的返回数据格式化类实例
本文实例讲述了php实现的返回数据格式化类及其用法,在字符串处理中非常具有实用价值。分享给大家供大家参考。具体方法如下:
DataReturn.class.php类文件如下:
<?php /**返回数据格式化类 *Date:2011-08-15 *Author:fdipzone */ classDataReturn{//classstart private$type; private$xmlroot; private$callback; private$returnData; publicfunction__construct($param=array()){ $this->type=$this->exists($param,'type')?strtoupper($param['type']):'JSON';//类型JSON,XML,CALLBACK,ARRAY $this->xmlroot=$this->exists($param,'xmlroot')?$param['xmlroot']:'xmlroot';//xmlrootdomname $this->callback=$this->exists($param,'callback')?$param['callback']:'';//JScallbackfunctionname $format=array(); $format['retcode']=$this->exists($param,'format.retcode')?$param['format']['retcode']:'retcode';//retcode对应名称 $format['msg']=$this->exists($param,'format.msg')?$param['format']['msg']:'msg';//msg对应名称 $format['data']=$this->exists($param,'format.data')?$param['format']['data']:'data';//data对应名称 $result=array(); $result[$format['retcode']]=$this->exists($param,'retcode')?$param['retcode']:0; $result[$format['msg']]=$this->exists($param,'msg')?$param['msg']:''; $result[$format['data']]=$this->exists($param,'data')?$param['data']:''; $this->returnData=$result; } //输出数据 publicfunctiondata_return(){ ob_clean(); switch($this->type){ case'JSON': $this->json_return(); break; case'XML': $this->xml_return(); break; case'CALLBACK': $this->callback_return(); break; case'ARRAY': $this->array_return(); break; default: $this->json_return(); } exit(); } //输出JSON格式数据,如有callback参数则返回JSONP格式 privatefunctionjson_return(){ header('content-type:text/html;charset=utf-8'); if(empty($this->callback)){ echojson_encode($this->returnData); }else{ echo$this->callback.'('.json_encode($this->returnData).');'; } } //输出XML格式数据 privatefunctionxml_return(){ header('content-type:text/xml;charset=utf-8'); echo$this->xml_encode($this->returnData,$this->xmlroot); } //输出JSON格式数据,并调用callback方法 privatefunctioncallback_return(){ header('content-type:text/html;charset=utf-8'); $this->callback=empty($this->callback)?'callback':$this->callback; echo"<scripttype=\"text/javascript\">\r\n"; echo$this->callback."(".json_encode($this->returnData).");\r\n"; echo"</script>"; } //输出数组格式数据 privatefunctionarray_return(){ header('content-type:text/html;charset=utf-8'); echo'<pre>'; print_r($this->returnData); echo'</pre>'; } //XML编码 privatefunctionxml_encode($data,$root='xmlroot',$encoding='utf-8'){ $xml="<?xmlversion=\"1.0\"encoding=\"".$encoding."\"?>\n"; $xml.="<".$root.">\n"; $xml.=$this->data_to_xml($data); $xml.="</".$root.">"; return$xml; } //数组转XML格式 privatefunctiondata_to_xml($data){ if(is_object($data)){ $data=get_object_vars($data); } $xml=''; foreach($dataas$key=>$val){ is_numeric($key)&&$key="itemid=\"$key\""; $xml.="<$key>"; $xml.=(is_array($val)||is_object($val))?$this->data_to_xml($val):$this->cdata($val); list($key,)=explode('',$key); $xml.="</$key>\n"; } return$xml; } //判断数据是否存在 privatefunctionexists($obj,$key=''){ if($key==''){ returnisset($obj)&&!empty($obj); }else{ $keys=explode('.',$key); for($i=0,$max=count($keys);$i<$max;$i++){ if(isset($obj[$keys[$i]])){ $obj=$obj[$keys[$i]]; }else{ returnfalse; } } returnisset($obj)&&!empty($obj); } } //判断是否需要加上<![CDATA[]]>标记 privatefunctioncdata($val){ if(!empty($val)&&!preg_match('/^[A-Za-z0-9+$]/',$val)){ $val='<![CDATA['.$val.']]>'; } return$val; } }//classend ?>
demo示例程序如下:
<?php require_once('DataReturn.class.php'); $param=array(//DataReturn参数 'type'=>'JSON',//输出的类型JSON,XML,CALLBACK,ARRAY默认为JSON 'retcode'=>'1000',//retcode的值,默认为0 'msg'=>'',//msg的值,默认为空 'data'=>array(//要输出的数据 'id'=>'100', 'name'=>'fdipzone', 'gender'=>1, 'age'=>28 ), 'format'=>array(//输出的数据key格式,默认为retcode,msg,data 'retcode'=>'status', 'msg'=>'info', 'data'=>'result' ), 'xmlroot'=>'xmlroot',//当type=XML时,XML根节点名称,默认为xmlroot 'callback'=>'callback'/*回调方法名称 type=JSON时,默认为空,如不为空,则输出callback({data}); type=CALLBACK时,默认为callback,自动调用页面JS回调方法 */ ); $obj=newDataReturn($param);//创建DataReturn类对象 $obj->data_return();//按格式输出数据 ?>
希望本文所述对大家php程序设计的学习有所帮助。