PHP开发APP接口---简介及封装通信接口方法

本文介绍了PHP面向对象中的接口概念及其示例,并详细解释了APP接口的工作原理、通信过程及数据封装方法。对比了JSON与XML在APP通信中的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、APP接口简介
APP接口和PHP面向对象中的接口是不一样的。

PHP面向对象中的接口,是一个特殊的抽象类,使用interface关键字定义。下边是一个PHP面向对象接口的例子

/**
 *接口里边定义的是一些抽象方法,它在接口中是不实现的
 * 接口就是一个标准,一个规范
 */
interface video{
    public function getVideos();
    public function getCount();
}

class movie implements video{    //一个类要去实现这个接口时,接口中的抽象方法,都必须在该类中实现,一个都不能少
    public function getVideos()
    {
        // TODO: Implement getVideos() method.
        echo "getVideos";
    }

    public function getCount()
    {
        // TODO: Implement getCount() method.
        echo "getCount";
    }
}

movie::getVideos();

(1)APP接口
比如说 拉钩网app,一款客户端软件,要开发的话,需要客户端开发工程师(布局页面、获得数据并填充到页面),这里的数据就来自APP接口也叫通信接口,当加载客户端时,会发送一个请求APP地址,这个地址叫“接口地址”,请求之后,接口会返回接口数据,然后客户端开发工程师解析这些数据(比如json格式或xml格式等),最后将数据填充到客户端。客户端开发工程师不会关心接口里边是怎么实现的,他只关心接口地址和接口数据。

(2)APP(通信)接口定义
它需要满足三个条件
1,接口地址。 是为了让客户端发送请求的
2,接口文件。 这个文件是在服务端的,用来处理一些业务逻辑,比如获取首页数据等
3,接口数据。 也就是接口返回的数据

(3)APP如何进行通信
这里写图片描述

(4)客户端APP通信格式区别
这里写图片描述
(想了解XML,点这里)
这里写图片描述
(想了解Json,点这里)

1,可读性方面。XML的可读性更高,因为它的结构非常清晰,用户可以很快速定位到某个节点当中
2,生成数据方面。生成json数据,php中只需要使用json_encode()即可,生成xml则需要拼接字符串,所以相对来说,json更方便
3,传输速度方面。很显然是json数据,因为json数据更小

(5)APP接口做的事情
1,获取数据。从数据库中或缓存中获取数据,然后通过jie’kou数据返回给客户端
2,提交数据。通过接口提交数据给服务器,然后服务器入库处理,或者其它处理

二、封装通信接口方法
这里写图片描述

<?php

class Res{
    const JSON = 'json';
    /**
     *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
        );

        return json_encode($result);

    }
    /**
     *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 .= "<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 .= "<{$key}{$attr}>";
            $xml .= is_array($value) ? self::xmlToEncode($value) : "$value";
            $xml .= "</$key>\n";
        }
        return $xml;
    }

    /**
     *综合通信方式封装
     *@param integer $code 状态码
     *@param string $message 提示信息
     *@param array $data 数据
     *@param string $type 数据类型  json/xml
     *return string
     */
    public static function show($code, $message = '', $data = array(), $type = self::JSON){//返回数据格式默认为  json

        if(!is_numeric($code)){
            return '';
        }

        $type = isset($_GET['format']) ? $_GET['format'] : $type;  //这个是当url中声明数据格式时 www.App.com/response.php?format=json

        $result = array(
            'code'    => $code,
            'message' => $message,
            'data'    => $data
        );

        if($type == 'json'){
            $jsonData = self::json($code, $message, $data);
            var_dump($jsonData);
            exit;
        }elseif ($type == 'array'){//数组形式
            var_dump($result);
        }elseif ($type == 'xml'){
            self::xml($code, $message, $data);
            //var_dump($xmlData);
            exit;
        }

    }
}

$data = array(
    'id'    => 1,
    'name'  => 'shulv',
    'age'   => 18,
    'type'  => array(4,5,6),//注意XML节点不可以是数字  所以想到将其设置成这种形式   <item id="下标">value</item>
    'test'  => array(1,520, 66 => array(123, 'test'))
);

Res::show(200, "success", $data, 'array');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值