接口的封装

php接口和APP(通信)接口的区别

什么是php接口?
接口interface 是一个规定,给人继承用的东西,有点像抽象类
在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法。
例如:

    interface Shop  
{  
public function buy($gid);  
public function sell($gid);  
public function view($gid);  
}    

我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都 不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不 行,但是具体你怎么去做,我不管,那是你的事,如:

class BaseShop implements Shop  
{  
public function buy($gid)  
{  
   echo('你购买了ID为 :'.$gid.'的商品');  
}  
public function sell($gid)  
{  
echo('你卖了ID为 :'.$gid.'的商品');  
}  
public function view($gid)  
{  
echo('你查看了ID为 :'.$gid.'的商品');  
}  
}

什么是通信接口?
程序设计方面App 是Application 的缩写
  在vc++中,app是应用程序的入口和出口,一般在这里处理一些启动和退出程序时需要读取或写入的设置信息,还有设置一些全局变量

接口的组成

基本组成部分

  1. 接口地址:客户端发送请求或者是接收后台发送过来的数据。
  2. 接口文件(在服务器端):处理业务逻辑。
  3. 接口数据。

接口数据类型
目前用来写接口的数据类型比较流行的是json和XML两种类型。
XML:XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。自从出现标记至今,带有标记的内容就有一个优势,即在计算机系统缺失时,仍然可以通过标记理解打印出来数据。
json:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON和XML的区别
我们可以从三个方面进行行分析:

  1. 可读性:重我们打印出来的数据结构我们不难看出,XML数据结构是一个树形结构,所有的节点和数据值可以一目了然,而json则是以一个key:values的形式呈现出来,数据少的时候还好说,一旦数据多了根本看不出来。

    XML数据结构
    XML数据结构
    JSON数据结构
    json数据结构

  2. 数据生成:json要比XML便捷,XML的节点必须成对出现,要有始有终。json数据只需要以key/values的形式出项无形中节约了存储空间。

  3. 数据传输:在数据传输方面json数据要比XML小所以json的传输效率要比XML要好。

注意:

  1. json格式只能接受UTF-8编码的数据,其他编码方式的数据会返回null.
  2. XML的节点不能为数字。

接口编写

通信接口数据标准格式

conde 状态码(200,400等);

message 提示信息(数据返回成功等);

data 返回数据;

以json格式传输数据
Response.php

<?php
  class Response{
     /**
      * 按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
        );
      echo json_encode($result);
      exit;
    }

  }

?>

ceshi.php

<?php 
require_once('./response.php');
 $arr = array(
    'id'=>1,
    'name'=>'zhansan'
    );
 Response::json('200','success',$arr);
?>

以XML格式传输数据

/**
      * 按XML方式输出通信数据
      * @param integer $code [状态码]
      * @param string $message [提示信息]
      * @param array $data [数据]
      * return string
      */

    public static function xmlEncode($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'?>";
      $xml.="<root>";
      $xml.=self::xmlTOEncode($result); 
      $xml.="</root>";
      echo $xml;
    }
    /**
     * [xmlTOEncode 数据处理]
     * @param  [array] $data [要处理的数据]
     * @return [array]       [description]
     */
    public static function xmlTOEncode($data)
    {
      $xml = $attr="";
      foreach($data as $key=>$value)
      {
         if(is_numeric($key)){
            $attr.="id={$key}";
            $key.="item";//防止节点出现数字报错
         }
         $xml.="<{$key}>";
         $xml.=is_array($value)?self::xmlTOEncode($value):$value;//递归处理数组
         $xml.="</{$key}>";
      }
      return $xml;
    }

将格式传输数据写活

 /**
      * 按综合方式输出通信数据
      * @param integer $code [状态码]
      * @param string $message [提示信息]
      * @param array $data [数据]
      * @param strind $type [传输类型]
      * return string
      */
     const JSON = "json";
     public static function show($code,$message='',$data=array(),$type){
         if(!is_numeric($code)){
        return '';
          }
          $result = array(
             'code'=>$code,
             'message'=>$message,
             'data'=>$data
            );
          if($type=='json')
          {
            self::json($code,$message,$data);
            exit;
          }elseif($type=='xml')
          {
             self::xmlEncode($code,$message,$data);
            exit;
          }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值