小蚂蚁学习APP接口开发(3)—— 统一调用入口方式封装通信接口
小蚂蚁学习APP接口开发(3)—— 统一调用入口方式封装通信接口
嗜学如命的小蚂蚁 发表于2年前
小蚂蚁学习APP接口开发(3)—— 统一调用入口方式封装通信接口
  • 发表于 2年前
  • 阅读 628
  • 收藏 8
  • 点赞 1
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 增加了一个show方法,实现统一入口的调用。

    接上篇 http://my.oschina.net/woshixiaomayi/blog/516871

    在类文件中包含了json返回数据的方法和xml返回数据的方法,在调用的时候需要调用不同的方法来实现不同类型数据的返回,今天再增加一个show()方法,作为一个统一调用的入口,只需要给它传入不同的参数就可以实现不同类型的数据返回了,比较方便。

<?php 

class Response{

	//设置一个常量作为类型的一个默认值
	const TYPE='json';

	/***********************************
	*	统一调用入口,$type参数为调用的类型,可以是json、xml、array打印数组使用等
	*	$param 	integer 	$code 		状态码
	*	$param 	string  	$message 	提示消息
	*	$param 	array   	$data 		具体数据
	*	$param  string 		$type 		返回类型
	*	return  mixed 		根据类型返回
	*
	******************************/
	public static function show($code,$message='',$data=array(),$type=self::TYPE){
		//做出一个验证,如果不是数字,就返回空
		if(!is_numeric($code)){
			return '';
		}

		//把传送进来的三个值,组装成一个数组
		$result	=	array(
			'code'		=>	$code,
			'message'	=>	$message,
			'data'		=>	$data	
		);

		//这一步的设计目的:可以通过地址栏get传参的方式从外部获取数据,非常灵活
		$type = isset($_GET['showtype'])?$_GET['showtype']:$type;	

		switch ($type) {
			case 'json':
				//如果是json,则返回json数据
				self::json($code,$message,$data);
				break;

			case 'xml':
				//如果是xml,这返回xml数据
				self::xml($code,$message,$data);
				break;

			case 'array':
				//如果传进来的值是array,这打印出这个数组
				var_dump($result);
				break;	
			
			default:
				#根据需要,处理业务逻辑
				echo '不能识别信息';
				break;
		}

	}

	/***********************************
	*	返回json格式数据
	*	$param 	integer 	$code
	*	$param 	string  	$message
	*	$param 	array   	$data
	*	return json
	*
	******************************/
	public static function json($code,$message='',$data=array()){
		
		//做出一个验证,如果不是数字,就返回空
		if(!is_numeric($code)){
			return '';
		}

		//把穿进来的三个值,组装成一个数组
		$result	=	array(
			'code'		=>	$code,
			'message'	=>	$message,
			'data'		=>	$data	
		);
		//json_encode()把数组转化成json格式输出	
		echo json_encode($result);
		exit;
	}

	/***********************************
	*	返回xml格式数据
	*	$param 	integer 	$code
	*	$param 	string  	$message
	*	$param 	array   	$data
	*	return json
	*
	******************************/
	public static function xml($code,$message='',$data=array()){

		//做出一个验证,如果不是数字,就返回空
		if(!is_numeric($code)){
			return '';
		}

		//把穿进来的三个值,组装成一个数组
		$result	=	array(
			'code'		=>	$code,
			'message'	=>	$message,
			'data'		=>	$data	
		);

		//便于浏览器输出xml格式文件	
		header('content-type:text/xml');
		//拼接xml
		$xml.="<?xml version='1.0' encoding='UTF-8' ?>";
		$xml.='<root>';
		$xml.=self::xmlToEncode($result);	//获取组装好的xml数据
		$xml.='</root>';

		echo $xml;
		exit;
	}

	public static function xmlToEncode($arr){
		//准备一个接收的空数组
		$xml='';
		//将这个数组的键,作为节点名称,值作为内容
		foreach ($arr as $key => $value) {
			/*约定一个规则,如果键是数字的话,格式为<item id='5'>aaa</item>*/
			if(is_numeric($key)){
				$attr	=	" id='{$key}'";//属性的值需要带上引号,不然报错
				$key	=	'item';
			}

			$xml.="<{$key}{$attr}>";
			//如果$value的值是个多维数组的话,需要递归遍历
			$xml.=is_array($value) ? self::xmlToEncode($value) : $value;	
			$xml.="</{$key}>";
		}
		return $xml;
	}
}

$array=array(
	'name'=>'学PHP的小蚂蚁',
	'age'=>'27',
	'sex'=>'male',
	'url'=>'博客 http://my.oschina.net/woshixiaomayi/blog',
	'like'=>array(
			'eat'=>'apple',
			'drink'=>'milk',
			'happy',
			'lucky'
		)
	);
Response::show(200,'success',$array,'array');
/*
	打印出来的样子
	<root>
		<code>200</code>
		<message>success</message>
		<data>
			<name>学PHP的小蚂蚁</name>
			<age>27</age>
			<sex>male</sex>
			<url>http:博客 //my.oschina.net/woshixiaomayi/blog</url>
			<like>
				<eat>apple</eat>
				<drink>milk</drink>
				<item id="0">happy</item>
				<item id="1">lucky</item>
			</like>
		</data>
</root>
*/

 ?>

    封装数据通信接口的方法基本上就是这个样子了,道理还是挺简单的。

共有 人打赏支持
粉丝 132
博文 161
码字总数 100864
×
嗜学如命的小蚂蚁
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: