PHP创建接口

在PHP中,我们同样使用interface关键字定义接口类型,如下面的代码。

interface IWork  
{  
    function workA();  
    function workB();  
}

定义接口时,我们习惯使用大写字母I开头,这种命名方式可以很清楚地说明这是一个接口类型。

在IWork接口中,我们定义了两个方法,即workA()和workB()方法,我们可以看到接口中的方法有两个重要的特点:

  • 不需要可访问性关键字,它们都是公共的(public)。
  • 没有方法体,这和抽象方法的定义是一样的。

此外,在接口中可以定义静态方法和非静态方法。

在PHP的接口中,我们不能定义变量,也就是不能直接定义属性了;不过,同样有两种方法可以实现在接口中定义属性的读写操作:

  • 定义getter和setter方法,如getAge()方法和setAge()方法。
  • 定义get()和set()方法,在接口中,我们同样可使用与类相关的魔术方法。

如下面的代码,我们分别使用这两种方法来实现接口中属性的读写方法定义:

interface IWork  
{  
    function getAge();  
    function setAge();  
    function __get();  
    function __set();  
}

不过,在实际应用过程中,使用getter和setter方法可以明确属性的名称,这样属性的功能更清晰,更符合创建接口的目的,即指定标准;而使用get()和set()方法定义接口的属性,灵活是灵活,只是和没有标准也没什么区别了。此外,在接口中同样可以使用call()方法用于自动调用方法,但这与使用get()和__set()方法一样,存在与制定标准精神不符的问题。所以,实际应用中,还是应该根据需要进行取舍。

关于PHP接口,还有一点需要注意,在接口中可以使用const关键字定义常量,而且这些常量可以直接通过接口类型访问,如下面的代码。

interface IWork  
{  
    const name = 'IWork';  
}  
echo IWork::name;  // 显示 IWork

此外,在PHP的接口还可以定义静态方法,如:

interface IWork  
{  
    static function work();  
}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程