This article mainly introduces the method of PHP to return request data in JSON or XML format, has a certain reference value, now share to everyone, the need for friends can refer to
Whether it is the Web page or the mobile side, need to request data to the server, then as a PHP service, how to return the standard data?
Now that the mainstream data format is nothing more than JSON and XML, let's look at how to use PHP to encapsulate a class that returns both of these format data.
Let's first define a response class
Class response{}
1. Return data in JSON format
Return data in JSON format is simple, directly to the data we acquired in the background, in the standard JSON format to return to the request side
Returns data in JSON format 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. Return data in XML format
This way you need to traverse the data inside the data, and if there are any arrays in it, recursively traverse them. There is also a special case, when the subscript of the array is a number, the XML format will be error, you need to replace the XML digital tags
Returns data as XML format public static function Xmlencode ($code, $message, $data =array ()) { if (!is_numeric ($code)) { return '; } $result =array ( "code" and "$code" and "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, the two formats encapsulated as a method, the complete code is as follows:
Class response{public static function show ($code, $message, $data =array (), $type = ' json ') {/** * output communication data in an integrated manner * @param intege R $code Status code * @param string $message message * @param array $data data * @param string $type data type *return String */if (!is_n Umeric ($code)) {return '; } $result =array ("Code" and "$code" and "message" = $message, "data" = $data); if ($type = = ' json ') {Self::json ($code, $message, $data); Exit }elseif ($type = = ' xml ') {Self::xmlencode ($code, $message, $data); Exit }else{///Subsequent add data in other formats}}//returns data in JSON format public static function JSON ($code, $message, $data =array ()) {if (!is_numeric ($code ) {return '; } $result =array ("Code" and "$code" and "message" = $message, "data" = $data); echo Json_encode ($result); }//returns data as XML format public static function Xmlencode ($code, $message, $data =array ()) {if (!is_numeric ($code)) {return '; } $result =array ("Code" and "$code" and "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 ("Success", $data, ' json ');
So when we call the Show method, we need to pass four parameters, the fourth parameter is the data format you want to return, the default is JSON format, the effect is as follows:
We call the Show method again to return the data in XML format:
Response::show ($, ' success ', $data, ' xml ');
The effect is as follows:
This allows us to complete the encapsulation of both data formats and to return the data in both formats.