找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1732|回复: 0
打印 上一主题 下一主题

php实现的返回数据格式化类实例

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:54:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php实现的返回数据格式化类及其用法,在字符串处理中非常具有实用价值。分享给大家供大家参考。具体方法如下:
DataReturn.class.php类文件如下:
type = $this->exists($param,'type')? strtoupper($param['type']) : 'JSON';   // 类型 JSON,XML,CALLBACK,ARRAY
    $this->xmlroot = $this->exists($param,'xmlroot')? $param['xmlroot'] : 'xmlroot';   // xml root dom name
    $this->callback = $this->exists($param,'callback')? $param['callback'] : '';     // JS callback function name

    $format = array();
    $format['retcode'] = $this->exists($param,'format.retcode')? $param['format']['retcode'] : 'retcode';//retcode 对应名称
    $format['msg'] = $this->exists($param,'format.msg')? $param['format']['msg'] : 'msg';        //msg 对应名称
    $format['data'] = $this->exists($param,'format.data')? $param['format']['data'] : 'data';      //data 对应名称

    $result = array();
    $result[$format['retcode']] = $this->exists($param,'retcode')? $param['retcode'] : 0;
    $result[$format['msg']] = $this->exists($param,'msg')? $param['msg'] : '';
    $result[$format['data']] = $this->exists($param,'data')? $param['data'] : '';

    $this->returnData = $result;
  }

  //输出数据
  public function data_return(){
    ob_clean();
    switch($this->type){
      case 'JSON':
        $this->json_return();
        break;
      case 'XML':
        $this->xml_return();
        break;
      case 'CALLBACK':
        $this->callback_return();
        break;
      case 'ARRAY':
        $this->array_return();
        break;
      default:
        $this->json_return();
    }
    exit();
  }

  //输出JSON格式数据,如有callback参数则返回JSONP格式
  private function json_return(){
    header('content-type:text/html;charset=utf-8');
    if(empty($this->callback)){
      echo json_encode($this->returnData);
    }else{
      echo $this->callback.'('.json_encode($this->returnData).');';
    }
  }

  //输出XML格式数据
  private function xml_return(){
    header('content-type:text/xml;charset=utf-8');
    echo $this->xml_encode($this->returnData,$this->xmlroot);
  }

  //输出JSON格式数据,并调用callback方法
  private function callback_return(){
    header('content-type:text/html;charset=utf-8');
    $this->callback = empty($this->callback)? 'callback' : $this->callback;
    echo "";
  }

  //输出数组格式数据
  private function array_return(){
    header('content-type:text/html;charset=utf-8');
    echo '';
    print_r($this->returnData);
    echo '';
  }

  //XML编码
  private function xml_encode($data, $root='xmlroot', $encoding='utf-8') {
    $xml = "\n";
    $xml.= "\n";
    $xml.= $this->data_to_xml($data);
    $xml.= "";
    return $xml;
  }

  //数组转XML格式
  private function data_to_xml($data) {
    if (is_object($data)) {
      $data = get_object_vars($data);
    }
    $xml = '';
    foreach ($data as $key => $val) {
      is_numeric($key) && $key = "item id=\"$key\"";
      $xml.="";
      $xml.= ( is_array($val) || is_object($val)) ? $this->data_to_xml($val) : $this->cdata($val);
      list($key, ) = explode(' ', $key);
      $xml.="\n";
    }
    return $xml;
  }

  //判断数据是否存在
  private function exists($obj,$key=''){
    if($key==''){
      return isset($obj) && !empty($obj);
    }else{
      $keys = explode('.',$key);
      for($i=0,$max=count($keys); $i标记
  private function cdata($val){
    if(!empty($val) && !preg_match('/^[A-Za-z0-9+$]/',$val)){
      $val = '';
    }
    return $val;
  }
}  // class end
?>
demo示例程序如下:
'JSON', // 输出的类型 JSON,XML,CALLBACK,ARRAY 默认为 JSON
          'retcode' => '1000', // retcode 的值,默认为0
          'msg'   => '',   // msg 的值,默认为空
          'data'  => array( // 要输出的数据
                  'id'   => '100',
                  'name'  => 'fdipzone',
                  'gender' => 1,
                  'age'  => 28
                 ),
          'format' => array( // 输出的数据key格式,默认为 retcode,msg,data
                  'retcode' => 'status',
                  'msg'   => 'info',
                  'data'  => 'result'
                 ),
          'xmlroot' => 'xmlroot', // 当type=XML时,XML根节点名称,默认为xmlroot
          'callback' => 'callback' /* 回调方法名称
                          type=JSON时,默认为空,如不为空,则输出callback({data});
                          type=CALLBACK时,默认为callback,自动调用页面JS回调方法
                       */
  );
  $obj = new DataReturn($param); // 创建DataReturn类对象
  $obj->data_return();      // 按格式输出数据
?>
希望本文所述对大家php程序设计的学习有所帮助。
            
            
您可能感兴趣的文章:
  • php格式化日期实例分析
  • PHP中常用的字符串格式化函数总结
  • PHP实现格式化文件数据大小显示的方法
  • php格式化金额函数分享
  • php使用wordwrap格式化文本段落的方法
  • PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
  • PHP日期函数date格式化UNIX时间的方法
  • php使用NumberFormatter格式化货币的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端