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='1.0' encoding='UTF-8'?>"; $xml.="<root>"; $xml.=self::xmlToEncode($result); $xml.="</root>"; echo $xml; } public static function xmlToEncode($data){ $xml=$attr=''; foreach($data as $key=>$value){ if(is_numeric($key)){ $attr="id='{$key}'"; $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 ''; } $result=array( "code"=>$code, "message"=>$message, "data"=>$data ); header("Content-Type:text/xml"); $xml="<?xml version='1.0' encoding='UTF-8'?>"; $xml.="<root>"; $xml.=self::xmlToEncode($result); $xml.="</root>"; echo $xml; } public static function xmlToEncode($data){ $xml=$attr=''; foreach($data as $key=>$value){ if(is_numeric($key)){ $attr="id='{$key}'"; $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');
Nous appelons à nouveau la méthode show , renvoyons les données au format XML :
response::show(200,'success',$data,'xml');
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!