PHP接口interface详解

2025-05-21 13:16:43

PHP interface详解

首先提三个问题

为什么要用接口?什么是接口?接口怎么使用?

什么是接口

使用关键词 interface 定义,就像是定义一个标准的类一样,但其中定义所有的方法都是空的,且必须是 公有的(接口也可以定义常量,接口常量和普通类常量一样,但接口常量只能是公有的)。

为什么要用接口

多人开发时,有时会遇到规范问题,比如两个人在不同类中要实现同一个功能,这时,两个人可能会起不一样的方法名,而接口就等于是提供了一种标准,大家要实现这个功能,都用这个方法名。

有人会问,那用继承不是更简单吗,的确如此,但PHP只支持单继承,如果想使用多个类的功能就很尴尬了,这时就可以用到接口了。

注:使用接口是让你再去实现一遍这个功能,而不是真的像继承一样,直接拿来用了

接口使用

类需要使用接口时,要用关键词 implements ,且类中必须实现接口定义的所有方法,不然会报一个致命错误。

Example1:

//定义接口A

interface A

{

function func1();

}

//类User 调用接口A,必须实现接口内函数的功能

class User implements A

{

function func1()

{

......

}

}

类可以使用多个接口

Example2:

//定义接口A

interface A

{

function func1();

}

//定义接口B

interface B

{

function func2();

}

//类User 调用接口A和B,必须实现接口内函数的功能

class User implements A,B

{

function func1()

{

......

}

function func2()

{

......

}

}

接口的继承

接口是可以继承的,且可以多继承

Example3:

//定义接口A

interface A

{

function func1();

}

//定义接口B

interface B extends A

{

function func2();

}

//类User 调用接口B,必须实现接口A和B内函数的功能

class User implements B

{

function func1()

{

......

}

function func2()

{

......

}

}

多继承

Example4:

//定义接口A

interface A

{

function func1();

}

//定义接口B

interface B

{

function func2();

}

//定义接口C

interface C extends A,B

{

function func3();

}

//类User 调用接口C,必须实现接口A、B、C内函数的功能

class User implements C

{

function func1()

{

......

}

function func2()

{

......

}

function func3()

{

......

}

}