PHP开发APP接口(三)

封装通信接口数据方法:
1.json方式封装数据方法
2.xml方式封装数据方法
3.综合数据封装方法。

json方式:json_encode();
该函数只接受utf-8编码的数据;
iconv(‘原始编码‘,‘目标编码‘,‘变量‘);通过此函数转换编码;

xml方式
php生成xml数据:
1>组装字符串
2>使用系统类
    DomDocument
<?php
$dom = new DOMDocument(‘1.0‘,‘utf-8‘);
$element = $dom->createElement(‘test‘,‘This is the root element!‘);
$dom->appendChild($element);
echo $dom->saveXml();
?>
    XMLWriter
    SimpleXML

xml的节点不能为数字,所以索引数组会报错;
解决方案:
    <0>1</0>
    ===><item id=‘0‘>1</item>

通信数据标准格式:
code      状态码(200,400等)
message    提示信息(邮箱格式不正确,数据返回不成功等)
data    返回数据

<?php
class Response{
/**
*按json方式输出通信数据
*@param integert $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
        }
        
        return json_encode($result);

}

public static function xml(){
        header(‘Content-Type:text/xml‘);
        $xml = "<?xml version=‘1.0‘ encoding=‘UTF-8‘?> \n";
        $xml.="<root> \n";
        $xml.="<code>200</code>\n";
        $xml.="<message>数据返回成功</message>\n";
        $xml.="<data>\n";
        $xml.="<id>1</id>\n";
        $xml.="<name>xiaoming</name>\n";
        $xml.="</data>\n";
        $xml.="</root>";

}
/**
*按xml方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*return string
*/

public static function xmlEncode($code,$message=‘‘,$data){
        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.="<root> \n";
        $xml.=self::xmlToEncode($result);    
        $xml.="</root>";

}

public static function xmlToEncode($data){
        $xml=$attr="";
        foreach($data as $key=>$value){
            if(is_numeric($key)){
            $attr="id=‘{$key}‘";
                $key="item";
            }
            $xml.="<{$key}{$attr}>\n";

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

$xml.="</{$key}> \n";
        }
        return $xml;
    }
/**
*按综合方式输出通信数据
*@param integert $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*@param string $type 数据类型
*return string
*/
    public static function show($code,$message=‘‘,$data=array(),$type=‘json‘){
        if(!is_numeric($code)){
            return "";
        }
        $type=isset($_GET[‘format‘])?$_GET[‘format‘]:$type;
        $result=array(
            ‘code‘ => $code,
            ‘message‘ => $message,
            ‘data‘ => $data            
        )

if($type == ‘json‘){
            self::json($code,$message,$data);
            exit;
        }elseif($type == ‘array‘){
            return $result;
        }elseif($type == ‘xml‘){
            self::xmlEncode($code,$message,$data);
        }else{
            //TODO
        }
    }
}
?>

=================================================================

<?php

/*直接调用*/
require_once(‘./reponse.php‘);
$arr = array{
    ‘id‘ =>1,
    ‘name‘ => ‘xiaoming‘
)

Reponse::json(200,‘数据返回成功‘,$arr);
Reponse::xmlEncode(200,‘数据返回成功‘,$arr);
?>

时间: 2024-10-07 05:16:39

PHP开发APP接口(三)的相关文章

PHP开发APP接口(二)

这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy print? <?php // http://app.com/list.php?page-=1&pagesize=12 require_once('./response.php'); require_once('./file.php'); $file = new File(); $data = $file->cacheData('index_cron_cahce'); i

小蚂蚁学习APP接口开发(7)—— APP接口实例——读取缓存方式开发APP接口的代码案例

从数据库中直接读取数据,虽然时效性很强,但是对数据库造成很大压力,尤其是在高访问量的情况下.这时候可以通过缓存,来有效的缓解了这一压力,虽然时效性有些不足,但是服务器的抗压能力却达到了很大的提高. 读取缓存方式的中心思想: 当请求进来时,先查看是否有缓存,如果有并且缓存还在有效时间内,不再查询数据库,直接返回缓存即可:如果没有或者已经过了有效时间,查询数据库,返回数据,同时生成一份新的缓存,供以后使用. 代码案例,还是在前几天的代码基础上进行改造完善. File静态缓存类    (原来的代码请参

PHP开发APP接口(八)

首页接口的开发以及客户端app的演示方案一:读取数据库方式开发首页接口从数据库获取信息 封装 生成接口数据应用场景:数据是时效性比较高的系统 方案二:读取缓存方式开发首页接口从数据库获取信息 封装写入缓存 设定缓存失效时间 返回数据在缓存时效内请求是从缓存里面获取数据:用途:减少数据库的压力,用途很广,搜狐视频,优酷首页 方案三:定时读取缓存方式开发首页接口定时生成缓存 应用端请求生存好的缓存 方案一:如何获取数据,如何将获取的数据快速生成接口数据 安装start bluestacks安卓模拟器

PHP开发APP接口(七)

APP接口实例 单例模式连接数据库首页接口的开发以及客户端app的演示APP版本升级接口APP错误日志的接口 单例模式连接数据库学习要点:掌握单例模式设计php连接数据库 单例模式:一个类只能拥有一个实例:<?php class Db{    puclic function __construct(){ }} $db=new Db();$db1=new Db();普通的类可以产生多个实例 单例模式三大原则:1.构造函数需要标记为非Public(防止外部使用new操作符创建对象),单例类不能在其他

php开发app接口

用interface关键字定义,示例: interface video(){ public function getVideos(); public function getCount();//这都是虚拟的方法 } 接口的实现:[接口中给的所有方法都必须在示例中实现] class movie implements video{ public function getVideo(){ //do something } public function getCount(){ //do somethi

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTime = 0){ //文件名 $filename = $this->_dir.$k.'.'.self::EXT; ..... line:25 把缓存时间设置为 11 位的数字,如果不满 11 位,则在时间前面补 0.再把缓存时间和缓存内容进行拼接: $cacheTime = sprintf('%011

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时)→返回数据 ↓                                              ↑ 缓存(缓存生效时)     →   →    →    → 方案三:定时读取缓存方式(crontab 定时任务) 封装并返回数据 ↑ 数据库→crontab→缓存 ↑ http 请求 ==

PHP 开发 APP 接口总结 - JSON 结合 XML 方式封装通信接口

要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php <?php class Response{ const JSON = 'json'; //封装的综合方法,默认的数据类型为json public static function show($code,$message = '',$data,$type = self::JSON){ if(!is_numer

PHP 开发 APP 接口--错误日志接口

APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did:客户端设备号 version_id:版本号 version_mini:小版本号 error_log:错误信息(由 APP 返回,客户端开发工程师开发) error.php 处理 app 错误日志 <?php require_once('./common.php'); class ErrorLog e