php如何封装类内乡通南阳的_php开发APP接口-封装通信接口改进版

class Response {

const JSON = "json";

/**

* 按综合方式输出通信数据

* @param integer $code 状态码

* @param string $message 提示信息

* @param array $data 数据

* @param string $type 数据类型

* return string

*/

public static function show($code, $message = '', $data = array(), $type = self::JSON) {

if(!is_numeric($code)) {

return '';

}

//这一步的设计目的:可以通过地址栏get传参的方式从外部获取数据,非常灵活

$type = isset($_GET['format']) ? $_GET['format'] : $type;

$result = array(

'code' => $code,

'message' => $message,

'data' => $data,

);

switch (strtolower($type)) {

case 'json':

//如果是json,则返回json数据

self::json($code,$message,$data);

break;

case 'xml':

//如果是xml,这返回xml数据

self::xml($code,$message,$data);

break;

case 'array':

//如果传进来的值是array,这打印出这个数组

header('Content-Type:text/html; charset=utf-8');

var_dump($result);

break;

default:

#根据需要,处理业务逻辑

echo '不能识别信息';

break;

}

}

/**

* 按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

);

header('Content-Type:application/json; charset=utf-8');

echo self::convertArrayToJson($result);

exit;

}

/**************************************************************

*

*使用特定function对数组中所有元素做处理

*@paramstring&$array要处理的字符串

*@paramstring$function要执行的函数

*@return boolean$apply_to_keys_also是否也应用到key上

*@access public

*

*************************************************************/

public static function arrayRecursive(&$array, $function, $apply_to_keys_also = false)

{

static $recursive_counter = 0;

if (++$recursive_counter > 1000) {

die('possible deep recursion attack');

}

foreach ($array as $key => $value) {

if (is_array($value)) {

self::arrayRecursive($array[$key], $function, $apply_to_keys_also);

} else {

$array[$key] = $function($value);

}

if ($apply_to_keys_also && is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

$recursive_counter--;

}

/**

* 转换数组为JSON格式

* @param 数组:$arr

*/

public static function convertArrayToJson($arr)

{

self::arrayRecursive($arr, 'urlencode', true);

$json = json_encode($arr);

return urldecode($json);

}

/**

* 按xml方式输出通信数据

* @param integer $code 状态码

* @param string $message 提示信息

* @param array $data 数据

* return string

*/

public static function xml($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='1.0' encoding='UTF-8'?>\n";

$xml .= "\n";

$xml .= self::xmlToEncode($result);

$xml .= "";

echo $xml;

}

public static function xmlToEncode($data) {

//准备一个接收的空数组

$xml = $attr = "";

//将这个数组的键,作为节点名称,值作为内容

foreach($data as $key => $value) {

/*约定一个规则,如果键是数字的话,格式为aaa*/

if(is_numeric($key)) {

$attr = " id='{$key}'";//属性的值需要带上引号,不然报错

$key = "item";

}

$xml .= "";

//如果$value的值是个多维数组的话,需要递归遍历

$xml .= is_array($value) ? self::xmlToEncode($value) : $value;

$xml .= "{$key}>\n";

}

return $xml;

}

}

$arr=array(

'name'=>'学PHP的小蚂蚁 改进版---wh',

'age'=>'24',

'sex'=>'male',

'url'=>'原博客 http://my.oschina.net/woshixiaomayi/blog',

'like'=>array(

'eat'=>'apple',

'drink'=>'milk',

'happy',

'lucky'

)

);

//Response::json(200,"success",$arr);

//Response::xml(200,'success',$arr);

// Response::show(200,'success',$arr,'xml');

// Response::show(200,'success',$arr,'array');

Response::show(200,'success',$arr);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值