易怀源

导航

PHP开发APP接口(三)

封装通信接口数据方法:
1.json方式封装数据方法
2.xml方式封装数据方法
3.综合数据封装方法。

json方式:json_encode();
该函数只接受utf-8编码的数据;
iconv('原始编码','目标编码','变量');通过此函数转换编码;

xml方式
php生成xml数据:
1>组装字符串
2>使用系统类
    DomDocument
<?php
$dom = new DOMDocument('1.0','utf-8');
$element = $dom->createElement('test','This is the root element!');
$dom->appendChild($element);
echo $dom->saveXml();
?>
    XMLWriter
    SimpleXML

xml的节点不能为数字,所以索引数组会报错;
解决方案:
    <0>1</0>
    ===><item id='0'>1</item>


通信数据标准格式:
code      状态码(200,400等)
message    提示信息(邮箱格式不正确,数据返回不成功等)
data    返回数据

<?php
class Response{
/**
*按json方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*return string
*/
    public static function json($code,$message='',$data=array()){

        if(!is_numeric($code)){
            return "";
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        }
        
        return json_encode($result);                

    }

    public static function xml(){
        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>xiaoming</name>\n";
        $xml.="</data>\n";
        $xml.="</root>";

    }
/**
*按xml方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*return string
*/

    public static function xmlEncode($code,$message='',$data){
        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'?> \n";
        $xml.="<root> \n";
        $xml.=self::xmlToEncode($result);    
        $xml.="</root>";    

    }

    public static function xmlToEncode($data){
        $xml=$attr="";
        foreach($data as $key=>$value){
            if(is_numeric($key)){
            $attr="id='{$key}'";
                $key="item";
            }
            $xml.="<{$key}{$attr}>\n";

            $xml.=is_array($value)?self::xmlToEncode($value):$value;

            $xml.="</{$key}> \n";
        }
        return $xml;
    }
/**
*按综合方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*@param string $type 数据类型
*return string
*/
    public static function show($code,$message='',$data=array(),$type='json'){
        if(!is_numeric($code)){
            return "";
        }
        $type=isset($_GET['format'])?$_GET['format']:$type;
        $result=array(
            'code' => $code,
            'message' => $message,
            'data' => $data            
        )

        if($type == 'json'){
            self::json($code,$message,$data);
            exit;
        }elseif($type == 'array'){
            return $result;
        }elseif($type == 'xml'){
            self::xmlEncode($code,$message,$data);
        }else{
            //TODO
        }
    }
}
?>

 =================================================================

<?php

/*直接调用*/
require_once('./reponse.php');
$arr = array{
    'id' =>1,
    'name' => 'xiaoming'
)

Reponse::json(200,'数据返回成功',$arr);
Reponse::xmlEncode(200,'数据返回成功',$arr);
?>

 

posted on 2016-06-03 12:21  易怀源  阅读(411)  评论(0编辑  收藏  举报