Maison  >  Article  >  développement back-end  >  Méthode PHP pour renvoyer les données demandées au format json ou xml

Méthode PHP pour renvoyer les données demandées au format json ou xml

不言
不言original
2018-05-31 15:22:221801parcourir

Cet article présente principalement la méthode par laquelle PHP renvoie les données de requête au format json ou xml. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Qu'il s'agisse d'un. page Web ou Le terminal mobile doit demander des données au serveur, donc en tant que serveur PHP, comment renvoyer des données standard ?

Les formats de données courants actuels ne sont rien de plus que json et xml. Voyons comment utiliser php pour encapsuler une classe qui renvoie des données dans ces deux formats

Commençons par. définir une classe de réponse

class response{
}

1. Renvoyer les données au format json

Renvoyer les données au format json est relativement simple. Il suffit de renvoyer les données obtenues par notre arrière-plan au demandeur au format json standard

//按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. Renvoyez les données au format XML

Cette méthode nécessite de parcourir les données dans les données. S'il y a un tableau dans les données, il doit être parcouru de manière récursive. Il existe également un cas particulier lorsque l'indice du tableau est un nombre, le format XML signalera une erreur. Vous devez remplacer les balises numériques dans le XML par

//按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. Encapsulez les deux formats dans une seule méthode. Le code complet est le suivant :

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');
De cette façon, nous appelons la méthode show, vous devez passer quatre paramètres, le quatrième paramètre est le format de données que vous souhaitez renvoyer, la valeur par défaut est le format json, l'effet est le suivant :

Nous appelons à nouveau la méthode show , renvoyons les données au format XML :

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

L'effet est la suivante :

De cette façon, nous avons terminé l'encapsulation de ces deux formats de données, et pouvons renvoyer des données dans ces deux formats à volonté

Recommandations associées :


php avec CGI Attaques possibles et solutions lors de l'installation du modèle

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn