我在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中的一个错误,或者它可能是故意的。无论哪种方式,有没有解决方法?