扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父类.为了解决这个问题,PHP引入了接口,接口的思想是指定了一个实现了该接口的类必须实现的一系列方法.接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是抽象方法,那么我们就换一种声明方法使用“接口“;也就是说接口里面所有的方法必须都是声明为抽象方法,另外接口里面不能声明变量(但可声明常量constant),而且接口里面所有的成员都是public权限的。所以子类在实现的时候也一定要使用public权限实限。
江门ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
声明一个类的时候我们使用的关键字是”class”,而接口一种特殊的类,使用的关键字是“interface”;
类的定义: class 类名{ … } ,接口的声明:interface 接口名{ …}
代码
代码
?php
//定义一个接口使用interface关键字,“One”为接口名称
interface One
{
//定义一个常量
const constant = 'constant value';
//定义了一个抽象方法”fun1”
public function fun1();
//定义了抽象方法”fun2”
public function fun2();
}
?
上例中定义了一个接口”one”,里面声明了两个抽象方法“fun1”和”fun2”,因为接口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用”abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的”public”这个访问权限也可以去掉,因为默认就是public的,因为接口里所有成员都要是公有的,所在对于接口里面的成员我们就不能使用“private”的和”protected”的权限了,都要用public或是默认的。另外在接口里面我们也声明了一个常量“constant“, 因为在接口里面不能用变量成员,所以我们要使用const这个关键字声明。
因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实例对象; 它也做为一种规范,所有抽象方法需要子类去实现。
我们可以使用”extends”关键字让一个接口去继承另一个接口:
?php
//使用”extends”继承另外一个接口
interface Two extends One
{
function fun3();
function fun4();
}
?
而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是”implements”,而不是我们前面所说的”extends”;
代码
?php
//使用“implements”这个关键字去实现接口中的抽象方法 接口和类之间
class Three implements One
{
function fun1()
{
…
}
function fun2()
{
…
}
}
//实现了全部方法,我们去可以使用子类去实例化对象了
$three=new Three();
?
我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才行;
在前面我们说过,PHP是单继承的,一个类只能有一父类,但是一个类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;
?php
//使用implements实现多个接口
class Four implemtns 接口一, 接口二, ….
{
//必须把所有接口中的方法都要实现才可以实例化对象。
}
?
PHP中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口, 一定要先继承类再去实现接口;
?php
//使用extends继承一个类,使用implements实现多个接口
class Four extends 类名一 implemtns 接口一, 接口二, ….
{
//所有接口中的方法都要实现才可以实例化对象
………
}
?
可以用curl获取借楼的信息。
所谓接口,就是提供一个url,只要你满足它要求的参数,就能得到你要的数据。比如你拿到一个接口,带上所需的参数,复制到地址栏同样能得到。不过最好用程序得到。file_get_contents也可以用,不过有局限性。所以我建议用curl。给你一个函数,挺好用的。
function request($url,$https=true,$method='GET',$data=null){
$ch = curl_init();//初始化,得到资源
curl_setopt($ch, CURLOPT_URL,$url); //请求数据的路径
curl_setopt($ch, CURLOPT_HEADER,false);//是否输出头
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接输出结果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之后的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否验证主机
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否进行证书验证
}
if($method=='POST'){
curl_setopt($ch, CURLOPT_POST, true); //POST传输
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //传输数据
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return "网络请求出错: " . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
这不难啊, 既然你也有例子了,就再细化一下,比如在结果输出后加个表示结束的变量, 或者加个error数量的变量,为0则是没发生错误. 你有什么不明白的?
======
以我做接口的经验,程序主要有几部分:
1.接收数据,验证数据合法性
这你已经有例子了, 就是用get方法,程序直接接收get的query,而支付宝,银行那些网关除了接收这些必要数据外,还会和商户约定一个key,是这字符串, 约定好每次发送的数据通过某种方式,比如连接的方式和这个key组成一个大的字串,再以MD5加密,附上这个hash给接口,用来判断这个请求的合法性,key是事先约定的,商户和接口都知道
2.处理数据
这个没什么好说的,数据入库,计算等等
3.返回数据
如果是以http协议的话,就直接输出header,然后输出
值名=值+换行符
这样的数据就可以了
银行接口网关,财付通,支付宝,域名注册接口我都做过,我只能提示到这里,具体要我做就不是200分的问题了,这需要时间调试
PHP开发APP接口需要注意下面问题:
1.制定规范
开发前一定要定好一个规范,比如要定好数据返回的通用参数和格式。关于数据格式,用的比较多的有xml和json,我建议用json,因为json比xml的好处更多。
2.精简的返回数据
接口数据因符合需要什么返回什么的原则,比如要查询某个用户的余额和注册时间,网页里面的做法可能是select * from user where
uid=1,但是接口一定要select balance,regtime from user where
uid=1。因为接口返回数据是要有开销的,要流量的,能少返回数据就尽量少返回,这样可以大大的提高性能。
3.数据类型要严格
要注意数据的类型,整数类型的数据一定要转为int,因为app客户端开发的java、object-c语言对数据类型比较严格,类型不对会照成app闪退。
4.要写接口文档
一定要写好接口文档,并按照模块写,而且还要书写规范,最好的格式是:
接口请求地址;请求参数(包括参数名、类型、是否必填);测试参数举例;返回参数(参数名,并注明每个参数的含义)。
这样哪怕以后项目很大,以不会照成维护困难的问题。
5.保证代码正确性
要验证保证代码正确无误,而且生成环境中要屏蔽掉错误,避免头部有额外的输出,照成返回的json等数据解析失败而导致app闪退等。
6.要优化代码的性能
app要求响应迅速,这样才能给用户比较好的体验感。所以移动接口端在处理业务逻辑的时候,要避免不要执行太复杂的sql语句,或者含有大量的循环,能做成缓存的尽量做缓存,比如将首页的热点模块信息可以存到redis缓存中。在不考虑网速的情况下,比较理想的接口响应时间应该是200毫秒以内。
7.不要随意更改旧接口
app不像网页,app一旦发布,有人使用之后,接口就不要乱修改了。以后升级也是,修改要在保证接口原有结构之上进行额外的扩展,否则会导致调用旧版接口的app出现bug。
8. 注意接口的安全
安全高于一切,必须要保证接口的安全。电话号码等敏感信息在传输的过程中一定要加密,否则可能会被别人抓包到。拿取用户信息的接口一定要验证权限,以防止接口被恶意调用,泄密用户信息,甚至篡改信息。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流