PHP接口技术介绍

zxh5566  2016-08-31 19:53   Hits: 

因为PHP只支持单继承,也就是说每个类只能继承一个父类,如果声明的新类继承抽象类实现模板以后,它就不能再有其他父

类了,为了解决这个问题,PHP引入接口,接口是一种特殊的抽象类,而抽象类又是一种特殊的类,所以接口也是一种特殊的

如果抽象类中的所有方法都是抽象方法,我们就可以换另外一种声明方式,使用接口技术,接口中声明的方法必须都是抽象

方法,另外不能在接口中声明变量,只能使用const关键字声明为常量的成员属性,而且接口中所有成员都必须有public的访

问权限。

类的声明时使用class,关键字标识,而接口声明则是interface关键字标识,声明接口的格式如下
interface 接口名{
常量成员
抽象方法
}
接口中所有的方法都要求是抽象方法,所以就不需要在方法前使用abstract关键字标识了,而且在接口中也不需要显示的使

用public访问权限进行修饰,因为默认权限就是public的,也只能是公有的,另外接口和抽象类一样也不能实例化对象,它

是一种更严格的规范,也需要通过子类来实现,但可以直接使用接口名称在接口外面去获取常量成员的值,一个接口的声明

例子如下

<?php
interface One{
const CONSTANT = "CONSTANT VALUE";
function fun1();
function fun2();
}

我们也可以使用extends让一个接口去继承另一个接口,实现接口之间的扩展,如果需要使用接口中的成员,则需要通过子类

去实现接口中的全部抽象方法,然后创建子类的对象去调用在子类中实现后的方法,但通过类去继承接口时需要使用

implements关键字来实现,而并不是使用extends关键字完成,如果需要使用抽象类去实现接口中的部分方法,也需要使用
implements关键字实现,下面例子声明一个抽象类three去实现one接口的方法,但要实例化对象,这个抽象类还要有子类去

把它所有的抽象方法都实现,声明一个four类去实现one接口中的全部方法。

<?php
interface One{
const CONSTANT = 'CONSTANT value';
function fun1();
function fun2();
}

abstract class Three implements One{
function fun2(){

}
}

class Four implements One{
function fun1(){}
function fun2(){}
}

?>

PHP是单继承的,一个类只能继承一个父类,但是一个类可以实现多个接口,将要实现的多个接口之间使用逗号分隔,而且在

子类中要将所有接口中的抽象方法全部实现才可以创建对象,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的

法律,如果是学校,还要遵守学校的校规一样,实现多个接口的格式如下

class 类名 implements 接口一、接口二......接口n{

}

实现多个接口是使用implements关键字,同时还可以使用extends关键字继承一个类,即在继承一个类的同时实现多个接口,

但一定要先使用extends继承一类再去使用implements实现多个接口,使用格式如下

class 类名 extens 父类名 implements 接口一、接口二......接口n{

}

除了上述一些应用,还有很多地方可以使用接口,例如对于一些已经开发好的系统,在结构上进行较大的调整已经不太现实

,这时可以通过定义一些接口并追加相应的实现来完成功能结构的扩展。

上一篇:PHP中的抽象方法和抽象类
下一篇:PHP中的strpos() 与 字符串截取substr()详解