欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php實現(xiàn)的返回數(shù)據(jù)格式化類實例

 更新時間:2014年09月22日 16:24:51   投稿:shichen2014  
這篇文章主要介紹了php實現(xiàn)的返回數(shù)據(jù)格式化類及其應用實例,包括針對XML、JSON等的格式化,非常具有實用價值,需要的朋友可以參考下

本文實例講述了php實現(xiàn)的返回數(shù)據(jù)格式化類及其用法,在字符串處理中非常具有實用價值。分享給大家供大家參考。具體方法如下:

DataReturn.class.php類文件如下:

<?php 
/** 返回數(shù)據(jù)格式化類 
*  Date:  2011-08-15 
*  Author: fdipzone 
*/ 
 
class DataReturn{  // class start 
 
  private $type; 
  private $xmlroot; 
  private $callback; 
  private $returnData; 
 
  public function __construct($param=array()){ 
    $this->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; 
  } 
 
  //輸出數(shù)據(jù) 
  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格式數(shù)據(jù),如有callback參數(shù)則返回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格式數(shù)據(jù) 
  private function xml_return(){ 
    header('content-type:text/xml;charset=utf-8'); 
    echo $this->xml_encode($this->returnData,$this->xmlroot); 
  } 
 
  //輸出JSON格式數(shù)據(jù),并調(diào)用callback方法 
  private function callback_return(){ 
    header('content-type:text/html;charset=utf-8'); 
    $this->callback = empty($this->callback)? 'callback' : $this->callback; 
    echo "<script type=\"text/javascript\">\r\n"; 
    echo $this->callback."(".json_encode($this->returnData).");\r\n"; 
    echo "</script>"; 
  } 
 
  //輸出數(shù)組格式數(shù)據(jù) 
  private function array_return(){ 
    header('content-type:text/html;charset=utf-8'); 
    echo '<pre>'; 
    print_r($this->returnData); 
    echo '</pre>'; 
  } 
 
  //XML編碼 
  private function xml_encode($data, $root='xmlroot', $encoding='utf-8') { 
    $xml = "<?xml version=\"1.0\" encoding=\"" . $encoding . "\"?>\n"; 
    $xml.= "<" . $root . ">\n"; 
    $xml.= $this->data_to_xml($data); 
    $xml.= "</" . $root . ">"; 
    return $xml; 
  } 
 
  //數(shù)組轉(zhuǎn)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.="<$key>"; 
      $xml.= ( is_array($val) || is_object($val)) ? $this->data_to_xml($val) : $this->cdata($val); 
      list($key, ) = explode(' ', $key); 
      $xml.="</$key>\n"; 
    } 
    return $xml; 
  } 
 
  //判斷數(shù)據(jù)是否存在 
  private function exists($obj,$key=''){ 
    if($key==''){ 
      return isset($obj) && !empty($obj); 
    }else{ 
      $keys = explode('.',$key); 
      for($i=0,$max=count($keys); $i<$max; $i++){ 
        if(isset($obj[$keys[$i]])){ 
          $obj = $obj[$keys[$i]]; 
        }else{ 
          return false; 
        } 
      } 
      return isset($obj) && !empty($obj); 
    } 
  } 
 
  //判斷是否需要加上<![CDATA[]]>標記 
  private function cdata($val){ 
    if(!empty($val) && !preg_match('/^[A-Za-z0-9+$]/',$val)){ 
      $val = '<![CDATA['.$val.']]>'; 
    } 
    return $val; 
  } 
}  // class end 
?> 

demo示例程序如下:

<?php 
  require_once('DataReturn.class.php'); 
  $param = array( // DataReturn 參數(shù) 
          'type'  => 'JSON', // 輸出的類型 JSON,XML,CALLBACK,ARRAY 默認為 JSON 
          'retcode' => '1000', // retcode 的值,默認為0 
          'msg'   => '',   // msg 的值,默認為空 
          'data'  => array( // 要輸出的數(shù)據(jù) 
                  'id'   => '100', 
                  'name'  => 'fdipzone', 
                  'gender' => 1, 
                  'age'  => 28 
                 ), 
          'format' => array( // 輸出的數(shù)據(jù)key格式,默認為 retcode,msg,data 
                  'retcode' => 'status', 
                  'msg'   => 'info', 
                  'data'  => 'result' 
                 ), 
          'xmlroot' => 'xmlroot', // 當type=XML時,XML根節(jié)點名稱,默認為xmlroot 
          'callback' => 'callback' /* 回調(diào)方法名稱 
                          type=JSON時,默認為空,如不為空,則輸出callback({data}); 
                          type=CALLBACK時,默認為callback,自動調(diào)用頁面JS回調(diào)方法 
                       */ 
  ); 
  $obj = new DataReturn($param); // 創(chuàng)建DataReturn類對象 
  $obj->data_return();      // 按格式輸出數(shù)據(jù) 
?>

希望本文所述對大家php程序設(shè)計的學習有所幫助。

相關(guān)文章

  • php實現(xiàn)選擇排序法的代碼示例

    php實現(xiàn)選擇排序法的代碼示例

    選擇排序法是一種簡單的排序算法,其基本思想是每次從未排序的部分中選擇最小(或最大)的元素,然后放到已排序部分的末尾,本文給大家介紹了如何使用php實現(xiàn)選擇排序法,感興趣的朋友可以參考下
    2023-11-11
  • php中bind_param()函數(shù)用法分析

    php中bind_param()函數(shù)用法分析

    這篇文章主要介紹了php中bind_param()函數(shù)用法,簡單分析了bind_param()函數(shù)的功能、參數(shù)、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-03-03
  • php使用google地圖應用實例

    php使用google地圖應用實例

    這篇文章主要介紹了php使用google地圖應用方法,分析了google地圖接口調(diào)用技巧及具體用法,具有一定參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • PHP實現(xiàn)獲取文件后綴名的幾種常用方法

    PHP實現(xiàn)獲取文件后綴名的幾種常用方法

    這篇文章主要介紹了PHP實現(xiàn)獲取文件后綴名的幾種常用方法,通過三種不同的方法實例分析了php獲取文件后綴名的實現(xiàn)技巧,分別通過字符串、文件屬性及數(shù)組等方式實現(xiàn)這一功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • PHP遞歸實現(xiàn)快速排序的方法示例

    PHP遞歸實現(xiàn)快速排序的方法示例

    這篇文章主要介紹了PHP遞歸實現(xiàn)快速排序的方法,簡單描述了快速排序的原理并結(jié)合實例形式分析了php使用遞歸算法實現(xiàn)快速排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • php中通過正則表達式下載內(nèi)容中的遠程圖片的函數(shù)代碼

    php中通過正則表達式下載內(nèi)容中的遠程圖片的函數(shù)代碼

    下午抽空寫了個用PHP正則表達式判斷內(nèi)容中的圖片,下載并保存非本域名下的圖片的程序
    2012-01-01
  • smarty section簡介與用法分析

    smarty section簡介與用法分析

    section的產(chǎn)生是為解決foreach的不足的,與foreach一樣,它用于設(shè)計模板內(nèi)的循環(huán)塊,它較為復雜,可極大程序上滿足程序需要,所以在程序中我習慣使用它而不使用foreach
    2008-10-10
  • 關(guān)于url地址傳參數(shù)時字符串有回車造成頁面腳本賦值失敗的解決方法

    關(guān)于url地址傳參數(shù)時字符串有回車造成頁面腳本賦值失敗的解決方法

    本篇文章是對關(guān)于url地址傳參數(shù)時字符串有回車造成頁面腳本賦值失敗的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP鉤子與簡單分發(fā)方式實例分析

    PHP鉤子與簡單分發(fā)方式實例分析

    這篇文章主要介紹了PHP鉤子與簡單分發(fā)方式,結(jié)合實例形式分析了PHP鉤子的定義與使用方法,以及多通道自由切換的實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • 兼容性最強的PHP生成縮略圖的函數(shù)代碼(修改版)

    兼容性最強的PHP生成縮略圖的函數(shù)代碼(修改版)

    寫通用性程序考慮兼容性是很頭痛的事情,關(guān)于用PHP生成縮略圖的代碼很多,不過能完全兼容gd1.6和gd2.x,并能保證縮圖清晰性的代碼幾乎沒有,我把我以前的代碼改了一下,就能實現(xiàn)了。
    2011-01-01

最新評論