PHP是否有抽象接口的公开实现?

Ste*_*nas 7 php oop abstract

我想到的概念来自Traversable界面.此接口不能直接实现,而是通过实现扩展它的接口来满足.

我可以声明一个无法实现的接口,而是使用公共接口扩展吗?

编辑:我意识到这种可能性是毫无意义的,因为它可以被第三方创建一个可以扩展基本接口的接口来规避.我正在寻找一种表达多态性的更简洁的方法.

例如:

abstract interface Vehicle
{
}

interface Car extends Vehicle
{
    public function drive(RouteProvider $routeProvider, $speed)
}

interface Boat extends Vehicle
{
    public function sail(BodyOfWater $water, $heading);
}

class PeopleMover
{
    public function move(Vehicle $vehicle)
    {
        if ($vehicle instanceof Boat) {
            // move people across bodies of water
        } elseif ($vehicle instanceof Car) {
            // move people along roads
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Cou*_*les 1

接口的目的是定义应用程序如何访问对象,而不是控制对象的定义方式。这是你的对象向应用程序声明的一种方式,“我实现了这个接口,所以你可以相信我有这些方法。”

如果你想控制对象的定义方式,你应该使用带有抽象方法的抽象类。