首頁  >  文章  >  後端開發  >  PHP以json或xml格式傳回請求資料的方法

PHP以json或xml格式傳回請求資料的方法

不言
不言原創
2018-05-31 15:22:221801瀏覽

這篇文章主要介紹了關於PHP以json或xml格式返回請求資料的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

無論是網頁還是行動端,都需要向伺服器請求數據,那麼作為php服務端,如何傳回標準的數據呢?

現在主流的資料格式無非就是json和xml,下面我們來看看如何用php來封裝一個傳回這兩種格式資料的類別

我們先定義一個回應類別

class response{
}

1、以json格式傳回資料

json格式回傳數據比較簡單,直接將我們後台取得到的數據,以標準json格式傳回給請求端即可

//按json格式返回数据
public static function json($code,$message,$data=array()){
 if(!is_numeric($code)){
  return '';
 }
 $result=array(
  "code"=>$code,
  "message"=>$message,
  "data"=>$data
 );
 echo json_encode($result);
}

##2 、以xml格式回傳資料

這種方式需要遍歷data裡面的數據,如果資料裡有數組還要遞歸遍歷。還有一種特殊情況,當數組的下標為數字時,xml格式會報錯,需要將xml中數字標籤替換

//按xml格式返回数据
 public static function xmlEncode($code,$message,$data=array()){
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  header("Content-Type:text/xml");
  $xml="<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>";
  $xml.="<root>";
  $xml.=self::xmlToEncode($result);
  $xml.="</root>";
  echo $xml;
 }
 public static function xmlToEncode($data){
  $xml=$attr=&#39;&#39;;
  foreach($data as $key=>$value){
   if(is_numeric($key)){
    $attr="id=&#39;{$key}&#39;";
    $key="item";
   }
   $xml.="<{$key} {$attr}>";
   $xml.=is_array($value)?self::xmlToEncode($value):$value;
   $xml.="</{$key}>";
  }
  return $xml;
 }
}

3、將兩種格式封裝為一個方法,完整程式碼如下:

#

class response{
 public static function show($code,$message,$data=array(),$type='json'){
  /**
  *按综合方式输出通信数据
  *@param integer $code 状态码
  *@param string $message 提示信息
  *@param array $data 数据
  *@param string $type 数据类型
  *return string
  */
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  if($type=='json'){
   self::json($code,$message,$data);
   exit;
  }elseif($type=='xml'){
   self::xmlEncode($code,$message,$data);
   exit;
  }else{
   //后续添加其他格式的数据
  }
 }
 //按json格式返回数据
 public static function json($code,$message,$data=array()){
  if(!is_numeric($code)){
   return '';
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  echo json_encode($result);
 }
 //按xml格式返回数据
 public static function xmlEncode($code,$message,$data=array()){
  if(!is_numeric($code)){
   return &#39;&#39;;
  }
  $result=array(
   "code"=>$code,
   "message"=>$message,
   "data"=>$data
  );
  header("Content-Type:text/xml");
  $xml="<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>";
  $xml.="<root>";
  $xml.=self::xmlToEncode($result);
  $xml.="</root>";
  echo $xml;
 }
 public static function xmlToEncode($data){
  $xml=$attr=&#39;&#39;;
  foreach($data as $key=>$value){
   if(is_numeric($key)){
    $attr="id=&#39;{$key}&#39;";
    $key="item";
   }
   $xml.="<{$key} {$attr}>";
   $xml.=is_array($value)?self::xmlToEncode($value):$value;
   $xml.="</{$key}>";
  }
  return $xml;
 }
}
$data=array(1,231,123465,array(9,8,'pan'));
response::show(200,'success',$data,'json');

這樣我們呼叫show方法時,需要傳遞四個參數,第四個參數為想要傳回的資料格式,預設為json格式,效果如下:

#我們再呼叫一次show方法,以xml格式傳回資料:

response::show(200,&#39;success&#39;,$data,&#39;xml&#39;);

效果如下:

這樣我們就完成了這兩種資料格式的封裝,可以隨意傳回這兩種格式的資料了

相關推薦:


php以CGI 模式安裝時可能會遇到的攻擊及解決辦法

以上是PHP以json或xml格式傳回請求資料的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn