PHPStorm 9对类继承的检查工作无法预料

时间:2015-11-21 13:59:54

标签: php oop phpstorm

我在PHPStorm 9中面临以下问题:
假设我有一个接口FieldInterface,它有一些方法:

namespace Acme;

interface FieldInterface {
    public function methodA();
    public function methodB();
}

然后我有一个实现接口基本功能的抽象类。该抽象类让用户实现某些方法,在我们的例子中假设它是methodB

namespace Acme;

abstract class AbstractField implements FieldInterface {
    public function methodA() {
        // implement methodA
    }

    public abstract function methodB(); // have the user implement it
}

最后我有一些现成的课程StringField

namespace Acme;

class StringField extends AbstractField {
    public function methodB() {
        // implement methodB
    }
}

此时一切进展顺利。但是如果我在FieldInterface中添加新方法,则PHPStorm并未说明AbstractField出现任何问题,而显而易见的是我应该在其中添加public abstract function newMethod();。但是,它会发现StringField类中的错误 可以理解,抽象类是为了扩展而制作的,但通常你扩展抽象类而不是实现底层接口。制作抽象类的全部意义在于节省用户实现接口的时间。那么为什么PHPStorm强迫我在具体类中实现接口,而不是强迫我在抽象类中实现它,它明确地实现了接口。
所以我想知道它是不是PHPStorm中的一个错误,或者它可能是故意的。无论哪种方式,有没有解决方法?

0 个答案:

没有答案