PHP开发APP接口(1)

WBOY
풀어 주다: 2016-06-13 12:11:43
원래의
983명이 탐색했습니다.

PHP开发APP接口(一)

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

定义抽象APP基类:

<?php /** * 定义API抽象类*/abstract class Api {	const JSON = &#39;Json&#39;;	const XML = &#39;Xml&#39;;	const ARR = &#39;Array&#39;;		/**	* 定义工厂方法	* param string $type 返回数据类型	*/	public static function factory($type = self::JSON) {		$type = isset($_GET[&#39;format&#39;]) ? $_GET[&#39;format&#39;] : $type;		$resultClass = ucwords($type);		require_once(&#39;./Response/&#39; . $type . &#39;.php&#39;);		return new $resultClass();	}	abstract function response($code, $message, $data);}
로그인 후 복사

以xml形式返回给APP:

<?phpclass Xml extends Api {	public function response($code, $message = &#39;&#39;, $data = array()) {		if(!is_numeric($code)) {			return &#39;&#39;;		}		$result = array(			&#39;code&#39; => $code,			'message' => $message,			'data' => $data		);		header('Content-Type:text/xml');		$xml = "<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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 .= "";                        //以递归形式返回,主要是因为数组在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 = &#39;&#39;, $data = array()) {		if(!(is_numeric($code))) {			return &#39;&#39;;		}		$result = array(			&#39;code&#39; => $code,			'message' => $message,			'data' => $data		);		echo json_encode($result);		exit;	}}
로그인 후 복사

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

<?phpclass Response {	const JSON = "json";	/**	* 按综合方式输出通信数据	* @param integer $code 状态码	* @param string $message 提示信息	* @param array $data 数据	* @param string $type 数据类型	* return string	*/	public static function show($code, $message = &#39;&#39;, $data = array(), $type = self::JSON) {		if(!is_numeric($code)) {			return &#39;&#39;;		}		$type = isset($_GET[&#39;format&#39;]) ? $_GET[&#39;format&#39;] : self::JSON;		$result = array(			&#39;code&#39; => $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=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>\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 .= "";			$xml .= is_array($value) ? self::xmlToEncode($value) : $value;			$xml .= "{$key}>\n";		}		return $xml;	}}
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿