开发者社区> 问答> 正文

php做APP接口整个通信流程!

求教怎么做 步骤 有哪些文件

 header('Content-type: application/json;charset=utf-8');
require 'conn.php';

//读取数据
$sql_notice = mysql_query('SELECT id,user_name FROM yxd_user limit 0,4');


//$data[] = mysql_fetch_array($sql_notice,MYSQL_ASSOC);  //第一行


//打印所有行 数组数据
while ($data[] = mysql_fetch_array($sql_notice,MYSQL_ASSOC)){
   $data;
}
var_dump($data);
echo "<br>";
 class Response{
    /**
    * 按json方式封装通信方法
    * @param integer $code 状态码
    * @param string $message 提示信息
    * @param array $data 数据
    */
    public static function json($code,$message='',$data=array())
    {
        if(!is_numeric($code) || !is_array($data)){
            return '';
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        )
        echo json_encode($result);

    }
}

现在写了这两个 但是不知道怎么做了

展开
收起
小旋风柴进 2016-03-09 11:36:59 2442 0
1 条回答
写回答
取消 提交回答
  • php以json或者xml 形式返回给app。明白这点就很好说了,就是把数据包装成json或者xml,返回给APP

    定义抽象APP基类:

    [php] view plain copy print?在CODE上查看代码片派生到我的代码片
    <?php  
    /** 
     * 定义API抽象类 
    */  
    abstract class Api {  
      
        const JSON = 'Json';  
        const XML = 'Xml';  
        const ARR = 'Array';  
          
        /** 
        * 定义工厂方法 
        * param string $type 返回数据类型 
        */  
        public static function factory($type = self::JSON) {  
            $type = isset($_GET['format']) ? $_GET['format'] : $type;  
            $resultClass = ucwords($type);  
            require_once('./Response/' . $type . '.php');  
            return new $resultClass();  
        }  
      
        abstract function response($code, $message, $data);  
    }  

    以xml形式返回给APP:

    [php] view plain copy print?在CODE上查看代码片派生到我的代码片
    <?php  
    class Xml extends Api {  
        public function response($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'?>\n";  
            $xml .= "<root>";  
            $xml .= self::xmlToEncode($result);  
            $xml .= "</root>";  
            echo $xml;  
        }  
      
        public static  function xmlToEncode($result) {  
            $xml = $attr = '';  
            foreach($result as $key => $value) {  
                        //判断键值对,如果是数字键值不允许  
                if(is_numeric($key)) {  
                    $attr = " id='" . $key . "'";  
                    $key = "item";  
                }  
                $xml .= "<{$key}{$attr}>";  
                            //以递归形式返回,主要是因为数组在xml中显示是array,必须显示出来具体键值对  
                $xml .= is_array($value) ? self::xmlToEncode($value) : $value;  
                $xml .= "</{$key}>\n";  
            }  
            return $xml;  
        }  
    }  

    以json格式返回数据:

    [php] view plain copy print?在CODE上查看代码片派生到我的代码片
    <?php  
    /** 
     * 按xml方式输出通信数据 
    */  
    class Json extends Api {  
        public function response($code, $message = '', $data = array()) {  
            if(!(is_numeric($code))) {  
                return '';  
            }  
      
            $result = array(  
                'code' => $code,  
                'message' => $message,  
                'data' => $data  
            );  
      
            echo json_encode($result);  
            exit;  
        }  
    }  

    也可以采用这种方式组装返回数据:

    [php] view plain copy print?在CODE上查看代码片派生到我的代码片
    <?php  
      
    class Response {  
        const JSON = "json";  
        /** 
        * 按综合方式输出通信数据 
        * @param integer $code 状态码 
        * @param string $message 提示信息 
        * @param array $data 数据 
        * @param string $type 数据类型 
        * return string 
        */  
        public static function show($code, $message = '', $data = array(), $type = self::JSON) {  
            if(!is_numeric($code)) {  
                return '';  
            }  
      
            $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  
            }  
        }  
        /** 
        * 按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 '';  
            }  
      
            $result = array(  
                'code' => $code,  
                'message' => $message,  
                'data' => $data  
            );  
      
            echo json_encode($result);  
            exit;  
        }  
      
        /** 
        * 按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 '';  
            }  
      
            $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;  
        }  
      
        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;  
        }  
      
    }  
    2019-07-17 18:55:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
女性移动App安全攻防战 立即下载
汇聚云计算的生态核能——云市场,云上APP Store 立即下载
千万级用户直播App——服务端架构设计和思考 立即下载