何时在PHP中使用接口

时间:2011-12-18 14:51:50

标签: php oop interface

在使用PHP中的对象进行编码时,我总是很难理解接口的真正价值(可能是我想象的其他语言)

根据我的理解,您使用Interface来强制或保证当一个类使用Interface时,该类将具有在该类Interface内定义的方法

因此,根据我对使用它们的小知识,这并不意味着在定义需要这些方法的超过1个类时,您只会发现Interface有益吗?

更清楚的是,如果我有一个类做了一件事而没有其他类需要做那样的事情,那么在该类上使用Interface是没有意义的吗?

所以你不会在每个课上使用Interface吗?

PS)如果您将此问题投票为exact duplicate,那么您没有阅读问题而只阅读标题,因为我已经阅读了大部分类似问题

1 个答案:

答案 0 :(得分:12)

  

根据我的理解,您使用界面来强制执行或保证   当一个类使用一个接口时,该类将拥有该接口   在该类的接口内定义的方法。

这实际上只是交易的一半(技术部分)。还有一些非常重要的架构一半,当您使用界面时会出现这样的一半:

function feed(IAnimal $interface) {
    // ...
}

(或者,"工厂"记录为返回实现IAnimal的实例的函数也可作为示例。)

这里的想法是界面的消费者说:"我想让动物喂食。我不在乎它是飞行,散步还是爬行。我不在乎它是大还是小。我只关心它与所有其他动物共享一些特征" - 包含界面定义的功能。

换句话说,接口用于从具体实现(类)中抽象合同(接口)。这使得具体类的实现者可以自由地修改,重命名,删除和添加实现,而不会破坏接口用户的代码,如果您直接在API中引用具体类,这是不可能的。

至于仅由一个类实现的接口:没有足够的信息来决定。如果将来可能有更多的接口实现,那么它确实有意义(例如:即使IHashFunction 当前Sha1HashFunction接口也会有意义唯一可用的实现)。否则它没有提供任何东西。