时间:2016-11-18来源:本站原创作者:佚名

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

定义抽象APP基类:

?php/***定义API抽象类*/abstractclassApi{constJSON=Json;constXML=Xml;constARR=Array;/***定义工厂方法*paramstring$type返回数据类型*/publicstaticfunctionfactory($type=self::JSON){$type=isset($_GET[format])?$_GET[format]:$type;$resultClass=ucwords($type);require_once(./Response/.$type..php);returnnew$resultClass();}abstractfunctionresponse($code,$message,$data);}

以xml形式返回给APP:

?phpclassXmlextendsApi{publicfunctionresponse($code,$message=,$data=array()){if(!is_numeric($code)){return;}$result=array(code=$code,message=$message,data=$data);header(Content-Type:text/xml);$xml=?xmlversion=1.0encoding=UTF-8?\n;$xml.=root;$xml.=self::xmlToEncode($result);$xml.=/root;echo$xml;}publicstaticfunctionxmlToEncode($result){$xml=$attr=;foreach($resultas$key=$value){//判断键值对,如果是数字键值不允许if(is_numeric($key)){$attr=id=.$key.;$key=item;}$xml.={$key}{$attr};//以递归形式返回,主要是因为数组在xml中显示是array,必须显示出来具体键值对$xml.=is_array($value)?self::xmlToEncode($value):$value;$xml.=/{$key}\n;}return$xml;}}

以json格式返回数据:

?php/***按xml方式输出通信数据*/classJsonextendsApi{publicfunctionresponse($code,$message=,$data=array()){if(!(is_numeric($code))){return;}$result=array(code=$code,message=$message,data=$data);echojson_encode($result);exit;}}

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

?phpclassResponse{constJSON=json;/***按综合方式输出通信数据*

paraminteger$code状态码*

paramstring$message提示信息*

paramarray$data数据*

paramstring$type数据类型*returnstring*/publicstaticfunctionshow($code,$message=,$data=array(),$type=self::JSON){if(!is_numeric($code)){return;}$type=isset($_GET[format])?$_GET[format]:self::JSON;$result=array(code=$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方式输出通信数据*

paraminteger$code状态码*

paramstring$message提示信息*

paramarray$data数据*returnstring*/publicstaticfunctionjson($code,$message=,$data=array()){if(!is_numeric($code)){return;}$result=array(code=$code,message=$message,data=$data);echojson_encode($result);exit;}/***按xml方式输出通信数据*

paraminteger$code状态码*

paramstring$message提示信息*

paramarray$data数据*returnstring*/publicstaticfunctionxmlEncode($code,$message,$data=array()){if(!is_numeric($code)){return;}$result=array(code=$code,message=$message,data=$data,);header(Content-Type:text/xml);$xml=?xmlversion=1.0encoding=UTF-8?\n;$xml.=root\n;$xml.=self::xmlToEncode($result);$xml.=/root;echo$xml;}publicstaticfunctionxmlToEncode($data){$xml=$attr=;foreach($dataas$key=$value){if(is_numeric($key)){$attr=id={$key};$key=item;}$xml.={$key}{$attr};$xml.=is_array($value)?self::xmlToEncode($value):$value;$xml.=/{$key}\n;}return$xml;}}







































北京专治白癜风的正规医院
北京治疗白癜风最正规医院

转载请注明原文网址:http://www.coolofsoul.com/phptx/12277.html
------分隔线----------------------------