[APP接口] -- PHP开发APP接口(一)

来源:互联网 发布:剑三藏剑捏脸数据成男 编辑:程序博客网 时间:2024/06/05 05:52

原文链接: http://www.cnblogs.com/xp796/p/5347374.html

php以json或者xml 形式返回给app。明白这点就很好说了,就是把数据包装成json或者xml,返回给APP

定义抽象APP基类:


<?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  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  /**  * 按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    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;      }    }  


0 0
原创粉丝点击