DataReturn.class.php
<?php /** 返回數據格式化類 * 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; } //輸出數據 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 "<script type=\"text/javascript\">\r\n"; echo $this->callback."(".json_encode($this->returnData).");\r\n"; echo "</script>"; } //輸出數組格式數據 // 查看本欄目