Why should I create Interfaces in PHP?
Possible Duplicate:
What is the point of interfaces in PHP?
为什么要用PHP创建接口?
正如我所理解的,接口是用来描述实现它们的类的。类必须至少包含这些函数。如果你是建立在别人的工作之上,或者必须保持一定程度的兼容性,那么这一切都很好。但在更简单的情况下?
我知道,对于编译的编程语言,比如C++,接口的使用可以提高编译速度,但是PHP呢?这种优势似乎消失了,因为PHP是解释的,而不是编译的。
也许一个现实世界的例子将有助于说明这一点。假设您需要构建一系列日志类,将消息记录到各种媒体,如文本文件、XML或数据库。当然,每个类都需要有单独的代码来与不同类型的存储进行交互。但是,如果它们都实现相同的接口,那么它们向其他代码显示的"公共面"总是相同的。这样,使用日志对象的其他代码就不需要知道它们是什么类的实例或者存储介质是什么。他们需要知道的是,所有的日志类,由于它们都实现相同的接口,共享一个公共的API。这是一种非常有效的工作方式。您可以构建一个代码库,以不同的方式解决相关问题,并在代码中简单地"即插即用"这些问题。
接口用于扩展/模拟核心PHP行为,如迭代器、数组访问等。这是接口为您提供的主要功能…也就是说,你不能以任何其他方式来做。
您还可以使用接口来强制参数检查:
1 2 3 | function foo(MyInterface $obj) { } |
虽然不像编译时使用另一种语言(例如C++)那样有用,但运行时检查在减少错误方面仍然非常有用。
最后,接口可以通过使用
接口是一种"模拟"多重继承的方式。PHP中的类只能扩展一个父类,但可以实现任意数量的接口,从而允许您创建具有许多不同类型的对象。
接口的使用与速度无关,永远不会。但这与去耦和抽象化有很大关系。
您将在PHP中使用它们:
class Car implements EngineInterface, BodyInterface, SteeringInterface {
so that a
还有其他我现在想不起来的事情
从Java思维:
An interface says,"This is what all classes that implement this particular interface will look like." Thus, any code that uses a particular interface knows what methods might be called for that interface, and that’s all. So the interface is used to establish a"protocol" between classes.