📌  相关文章
📜  我们什么时候需要PHP中的接口?

📅  最后修改于: 2022-05-13 01:56:39.300000             🧑  作者: Mango

我们什么时候需要PHP中的接口?

接口是类(实现接口)必须实现的公共 API 的定义。它也被称为契约,因为接口允许指定类必须实现的方法列表。接口定义与类定义类似,只是将关键字class改为interface。
例子:

php


php


php
// Function to Implements more than one
// interface by single class.
  
class MyClass implements IMyInterface {
  
    public function method_1() {
  
        // method_1  implementation
    }
 
    public function method_2() {
  
        // method_2 implementation
    }
}


php
interface Foo {
 
}
interface Bar {
 
}
interface Bass extends Foo, Bar {
 
}


php
color;
    }  
   
    public function setColor($color) {
        $this->color = $color;
    }  
   
    public function describe() {
        return sprintf("GeeksforGeeks %s %s\n",
            $this->getColor(), get_class($this));
    }  
}
 
$triangle = new Triangle();
 
// Set the color
$triangle->setColor('green');
 
// Print out the value of the describe common
// method provided by the abstract class will
// print out out "I am an Orange Triangle"
print $triangle->describe();
?>


接口可以包含方法和/或常量,但不包含属性。接口常量与类常量具有相同的限制。接口方法是隐式抽象的。
例子:

PHP


任何需要实现接口的类都必须使用 implements 关键字。一个类一次可以实现多个接口。

PHP

// Function to Implements more than one
// interface by single class.
  
class MyClass implements IMyInterface {
  
    public function method_1() {
  
        // method_1  implementation
    }
 
    public function method_2() {
  
        // method_2 implementation
    }
}

有趣的点:

  • 一个类不能实现两个具有相同方法名称的接口,因为它最终会导致方法不明确。
  • 像类一样,可以通过使用相同的关键字“extends”在接口之间建立继承关系。
    例子:

PHP

interface Foo {
 
}
interface Bar {
 
}
interface Bass extends Foo, Bar {
 
}

下面是一个完整的例子,展示了接口是如何工作的。
例子:

PHP

color;
    }  
   
    public function setColor($color) {
        $this->color = $color;
    }  
   
    public function describe() {
        return sprintf("GeeksforGeeks %s %s\n",
            $this->getColor(), get_class($this));
    }  
}
 
$triangle = new Triangle();
 
// Set the color
$triangle->setColor('green');
 
// Print out the value of the describe common
// method provided by the abstract class will
// print out out "I am an Orange Triangle"
print $triangle->describe();
?>

输出:

GeeksforGeeks green Triangle

使用接口的重要性:

  • 接口提供了一个灵活的基础/根结构,这是类所没有的。
  • 通过实现接口,对象的调用者只需要关心对象的接口而不是对象方法的实现。
  • 接口允许不相关的类实现相同的方法集,而不管它们在类继承层次结构中的位置。
  • 接口使您能够对多重继承进行建模。