什么是PHP接口?

在PHP中,接口是一种特殊的抽象类,它定义了一个契约,规定实现类必须遵循的方法。与抽象类不同,接口中的所有方法都是抽象的(PHP 8.0后允许存在默认方法实现)。

接口既然是特殊的抽象类,那就有特殊的写法,接口和抽象类的区别主要体现在:

1. 接口不同于抽象类通过"abstract class"来声明,而是通过关键字“interface”来声明。

2. 接口要求所有方法都具有public公共属性(PHP8.1后允许接口中包含私有方法作为实现细节),抽象类可以存在protected受保护属性。

3. 接口的方法不需要跟抽象类的抽象方法一样通过abstract来修饰。

比如一台电脑,会有usb接口、耳机接口、显示器接口等,我们可以通过PHP这样描述:

<?php 
/* 接口-interface */
interface Computer
{
    public function usb();//usb接口
    public function ear();//耳机接口
    public function screen();//显示屏接口
}
?>

既然有接口了,那么我们该如何实现接口呢?

我们可以通过关键字implements来实现接口。比如我们有一个dotcpp品牌的电脑,我们可以这样实现接口:

<?php 
/* 接口-interface */
interface Computer
{
    public function usb();//usb接口
    public function ear();//耳机接口
    public function screen();//显示屏接口
}
class dotcpp implements Computer
{
    public function usb()
    {
        echo "dotcpp版本的usb接口";
    }//usb接口
    public function ear()
    {
        echo "dotcpp版本的耳机接口";
    }//耳机接口
    public function screen()
    {
        echo "dotcpp版本的显示屏接口";
    }//显示屏接口
}
?>

接口原来是这样啊,那么接口有什么用呢?

我们都知道MySQL 是一款简单易用、性能优秀的开源关系型数据库,以"快速读取"著称;而 PostgreSQL 则是一个功能更强大、更符合SQL标准的关系型数据库,以"功能丰富"和"数据完整性"著称。我们可以通过一个接口,来兼容不同的数据库:

<?php 
/* 1. 创建一个数据库接口 */
interface Database {
    public function connect();
    public function query($sql);
    public function disconnect();
}
/* 使用接口 */
class Mysql implements Database {
    public function connect() {
        echo "连接Mysql数据库<br>";
    }
    
    public function query($sql) {
        echo "执行Mysql查询: $sql<br>";
    }
    
    public function disconnect() {
        echo "断开Mysql连接<br>";
    }
}
class Postgresql implements Database {
    public function connect() {
        echo "连接PostgreSQL数据库<br>";
    }
    
    public function query($sql) {
        echo "执行PostgreSQL查询: $sql<br>";
    }
    
    public function disconnect() {
        echo "断开PostgreSQL连接<br>";
    }
}
// 可以轻松切换数据库
function processData(Database $db) {
    $db->connect();
    $db->query("SELECT * FROM users");
    $db->disconnect();
}
processData(new Mysql());
processData(new Postgresql());
?>

总结:在PHP中,接口是面向对象编程中的"契约"和"规范",它定义了类必须实现的方法集合,实现了完全的抽象,使得代码具有高度的抽象性和可扩展性。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)