接口的封装

来源:互联网 发布:硬笔书法网络免费班 编辑:程序博客网 时间:2024/05/22 16:55

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;          }        }
0 0