PHP之类的弱类型语言的接口有什么意义?

Dea*_*ane 5 php interface

我从来没有弄明白这一点.如果您的语言没有进行类型检查,那么界面会为您带来哪些好处?

mea*_*gar 10

当子类"忘记"在其父类中实现某个抽象方法时,接口会导致程序更早失败并且更可预测.

在PHP的传统OOP中,您必须依赖以下内容来发出运行时错误:

class Base_interface {
    function implement_me() { assert(false); }
}

class Child extends Base_interface {
}
Run Code Online (Sandbox Code Playgroud)

使用接口,当您的某个接口的子类没有实现这样的方法时,在声明子类时,而不是在使用它的过程中,您会得到即时反馈.

  • @stereofrog:你刚回答了自己的问题.当您使用接口而忘记实现方法时,编译期间会抛出错误.如果你这样做,你必须实际调用该方法来获取错误.这就是区别.是的,PHP确实有一个编译阶段.它仍然需要将其编译为操作码.仅仅因为它没有创建可执行文件并不意味着它没有编译阶段.它没有被解释. (3认同)
  • @stereofrog你是在问为什么人们更喜欢在定义类时引发的错误与之后根据类的使用方式*可能*提出的错误?我认为"早早失败"是这些天普遍接受的最佳实践. (3认同)