-
jsonxml.php <?php class Response{ const JSON = "json";//定义一个参数,默认为json public static function show($code,$message = '',$data = array(),$type){ if(!is_numeric($code)){ return '';} //需要改成数据类型是客户端工程师可控的。直接在浏览器地址栏输入接口地址带上参数,想要的数据类型就可以获取 //http://localhost/mooc/app/testjx.php?format=json/xml/array $type = isset($_GET['format']) ? $_GET['format'] : self::JSON; $result = array( 'code' => $code, 'message' => $message, 'data' => $data,); if($type == 'json'){ self::json($code,$message,$data); exit; }elseif($type == 'array'){ var_dump($result);//为了调试用的。 }elseif($type == 'xml'){ self::xmlEncode($code,$message,$data); exit;}else{//TODO后续业务}} public static function json($code,$message = '',$data = array()){} public static function xmlEncode($code,$message,$data = array()){} } testjx.php <?php require_once('./jsonxml.php'); $data = array('id' => 1,'name' => 'panda','number' => array(1,7,8), 'mixnum' => array(11,28,69=>array(178,'yjp'),),); Response::show(200,'success',$data,'json');查看全部
-
jsonxml.php <?php //2-4 综合方式封装通信数据方法 class Response { const JSON = "json";//定义一个参数,默认为json /** * 按综合方式输出通信数据 */ public static function show($code,$message = '',$data = array(),$type){ if(!is_numeric($code)){ return '';} $result = array( 'code' => $code, 'message' => $message, 'data' => $data,); if($type == 'json'){ self::json($code,$message,$data); exit; }elseif($type == 'array'){ //如果开发人员想看数据结构,传一个array返回数据形式 var_dump($result);//打印$result。这个数据是不能通信的,只是为了调试用的。 }elseif($type == 'xml'){ self::xmlEncode($code,$message,$data); exit; }else{ //TODO后续业务 }} public static function json($code,$message = '',$data = array()){} public static function xmlEncode($code,$message,$data = array()){} } testjx.php <?php require_once('./jsonxml.php'); $data = array('id' => 1,'name' => 'panda','number' => array(1,7,8), 'mixnum' => array(11,28,69=>array(178,'yjp'),),); //这种方法想输出不同格式的数据时,都是需要从服务端控制的。 Response::show(200,'success',$data,'json/xml/array');查看全部
-
2-4 综合方式封装通信数据方法 封装方法: show($code,$message,$data=array(),$type='json')查看全部
-
xml.php <?php //2-3 XML方式封装通信接口 class Response{ public static function xmlEncode($code,$message,$data = array()){ if(!is_numeric($code)){ return '';//如果$code传递的不是数字返回空} $result = array( 'code' => $code, 'message' => $message, 'data' => $data,); header("Content-Type:text/xml");//指定页面显示类型 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= self::xmlToEncode($result); $xml .= "</root>"; echo $xml;} //解析$result数组,把它拼装成XMl数据,然后返回给它 public static function xmlToEncode($data){ $xml = ""; foreach ($data as $key => $value){ $attr = ""; if (is_numeric($key)){ $attr = " id='{$key}'"; $key = "item";} $xml .= "<{$key}{$attr}>"; $xml .= is_array($value) ? self::xmlToEncode($value) : $value; $xml .= "</{$key}>\n";} return $xml;}} $data = array( 'id' => 1, 'name' => 'panda', 'number' => array(1,7,8), //4.xml节点属性在同一个节点下是需要唯一的。像下面数组输出的id都为0. //把$attr放在循环里面 'mix' => array('x','xx' => 'xx','xxx' => 'xxx') ); Response::xmlEncode(200,'success',$data);查看全部
-
xml.php <?php //2-3 XML方式封装通信接口 class Response{ public static function xmlEncode($code,$message,$data = array()){ if(!is_numeric($code)){ return '';//如果$code传递的不是数字返回空} $result = array('code' => $code,'message' => $message,'data' => $data,); header("Content-Type:text/xml");//指定页面显示类型 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= self::xmlToEncode($result); $xml .= "</root>"; echo $xml;} //解析$result数组,把它拼装成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}>\n";} return $xml;}} $data = array( 'id' => 1,'name' => 'panda', //3.像这种数组会把$value对应的$key 0 1 2当成节点。但XML的节点不能为数字。 //解决办法:<0>1</0> -> <item id="0">1</item> 'number' => array(1,7,8), 'mixnum' => array(11,28,69=>array(178,'yjp'),),); Response::xmlEncode(200,'success',$data);查看全部
-
xml.php <?php class Response { public static function xmlEncode($code,$message,$data = array()) { if (!is_numeric($code)) { return '';//如果$code传递的不是数字返回空 } $result = array( 'code' => $code, 'message' => $message, 'data' => $data, ); header("Content-Type:text/xml");//指定页面显示类型 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= self::xmlToEncode($result);//2.$result里的data对应的是$datas数组,这时$data数组里的值不会被解析出来。这时需要递归:如果$value是数组的话,再去循环遍历一下 $xml .= "</root>"; echo $xml; } //解析$result数组,把它拼装成XMl数据,然后返回给它 public static function xmlToEncode($data) { $xml = "";//定义一个变量存储XML数据 //用foreach循环把$result遍历出来 foreach ($data as $key => $value) { $xml .= "<{$key}>";//加{}是为了能识别出$key[节点]是变量 $xml .= is_array($value) ? self::xmlToEncode($value) : $value;//2$result $xml .= "</{$key}>\n"; } return $xml; } } $data = array( 'id' => 1, 'name' => 'panda', ); Response::xmlEncode(200,'success',$data);查看全部
-
xml.php <?php //2-3 XML方式封装通信接口 class Response { /** * 按XML方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * @return string */ public static function xmlEncode($code,$message,$data = array()) { if (!is_numeric($code)) { return '';//如果$code传递的不是数字返回空 } $result = array( 'code' => $code, 'message' => $message, 'data' => $data, ); header("Content-Type:text/xml");//指定页面显示类型 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= self::xmlToEncode($data); $xml .= "</root>"; echo $xml; } //解析$result数组,把它拼装成XMl数据,然后返回给它 public static function xmlToEncode($data) { $xml = "";//定义一个变量存储XML数据 //用foreach循环把$result遍历出来 foreach ($data as $key => $value) { $xml .= "<{$key}>";//加{}是为了能识别出$key[节点]是变量 $xml .= $value; $xml .= "</{$key}>\n"; } return $xml; } } $data = array( 'id' => 1, 'name' => 'panda', ); Response::xmlEncode(200,'success',$data);查看全部
-
2-3 XML方式封装通信接口 2-2.2 XML方式封装接口数据方法 封装方法:xmlEncode($code,$message = "",$data = $array()); data数据分析 1.array('index' => 'api'); 2.array(1,7,89);查看全部
-
xmlstr.php <?php //2-2 PHP生成XML数据 class Response { public static function xml() { //组装字符串的方式生成XML数据 //如果要在浏览器直接输出xml格式数据,需要在发送的http头信息中指定xml格式文件。(浏览器默认http头为html格式) header("Content-Type:text/xml"); $xml = "<?xml version='1.0' encoding='UTF-8'?>\n"; $xml .= "<root>\n"; $xml .= "<code>200</code>\n"; $xml .= "<message>数据返回成功</message>\n"; $xml .= "<data>\n"; $xml .= "<id>1</id>\n"; $xml .= "<name>panda</name>\n"; $xml .= "</data>\n"; $xml .= "</root>"; echo $xml; } } Response::xml(); localhost/mooc/app/xmlstr.php <root> <code>200</code> <message>数据返回成功</message> <data> <id>1</id> <name>panda</name> </data> </root>查看全部
-
2-2 PHP生成XML数据 1)组装字符串(把XML的数据节点组装成一个字符串然后输出就可以得到XML数据) 2)使用系统类 。DomDocument 。XMLWriter 。SimpleXML查看全部
-
2.1.3 JSON方式如何封装通信数据方法 json.php <?php //2-1 JSON方式封装通信接口 class Response { /** * 按JSON方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * @return string */ public static function json($code,$message = '',$data = array()) { if (!is_numeric($code)) { return '';//如果$code传递的不是数字返回空 } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); echo json_encode($result); exit; } } testjson.php <?php //加载类文件 require_once('./json.php'); $arr = array( 'id' => 1, 'name' => 'panda', 'address' => 'shenzhen' ); //调用封装好的json方法,需要传递3个参数 Response::json(200,'数据返回成功',$arr); 浏览器显示: {"code":200,"message":"\u6570\u636e\u8fd4\u56de\u6210\u529f","data":{"id":1,"name":"panda","address":"shenzhen"}}查看全部
-
2.1.2 通信数据标准格式 因为服务器端产生的接口数据(通信数据)供客户端通信需要有一个标准格式。如果没有标准格式会给客户端开发工程师带来很多不必要的工作。 code:状态码(200,400等) message:提示信息(邮箱格式不正确;数据返回成功等) data:返回数据查看全部
-
response.php <?php //2-1 JSON方式封装通信接口 $arr = array( 'id' => 1, 'name' => 'panda' ); //2.把$data转换成GBK编码会不会生成JSON数据 $data = "输出json数据"; //用到iconv('源编码','目标编码',数据变量)函数:用于字符串的编码转换。 $newData = iconv('UTF-8','GBK',$data); echo $newData; //显示:输出json数据(GBK编码格式) echo json_encode($newData); //显示:null localhost/mooc/app/response.php 输出json数据null查看全部
-
response.php <?php $arr = array( 'id' => 1, 'name' => 'panda' ); //1.该函数只能接受UTF-8编码的数据,如果传递其他格式的数据该函数会返回null //echo json_encode($arr); localhost/mooc/app/response.php 生成JSON数据 {"id":1,"name":"panda"}查看全部
-
2-1 JSON方式封装通信接口 2.1.1 PHP生成JSON数据 方法:json_encode($value) 注:该函数只能接受UTF-8编码的数据,如果传递其他格式的数据该函数会返回null查看全部
举报
0/150
提交
取消