我正在努力提高我在PHP中的OOP知识,并一直在研究抽象类和接口.
我学到
我认为这涵盖了基础知识.如果您认为我遗漏了任何内容,请随意添加.
我想知道的是,是否有任何实际的这些类的实现示例,尤其是接口类.有没有人知道任何使用它们的开源应用程序我可以浏览以更好地理解它们并查看它们在何时何地被有效使用?我遇到过使用动物的书籍例子,但未能证明这些类别的重要性.
命令模式并不是一个现实世界的例子,但您通常会遇到接口和抽象类的一种设计模式。请参阅链接以获取示例代码。
一般来说,“针对接口进行编程”被认为是良好的 OO 实践,因为它解耦了具体实现,让您可以更轻松地将它们更改为其他实现,例如,而不是要求特定的类
public function fn(ConcreteClass $obj)
{
$obj->doSomething()
}
Run Code Online (Sandbox Code Playgroud)
你只要要求它提供一组特定的方法
public function fn(MyInterface $obj)
{
$obj->doSomething()
}
Run Code Online (Sandbox Code Playgroud)
接口还有助于梳理大型继承结构。由于 PHP 仅支持单继承,因此您经常会看到如下所示的层次结构:
BaseClass -> Logger -> Auth -> User
Run Code Online (Sandbox Code Playgroud)
其中每个都包含这些类中使用的特定方面。有了界面,你只需要做
User implements Loggable, Authenticable
Run Code Online (Sandbox Code Playgroud)
然后通过策略模式或组合/聚合包含特定代码,这最终更易于维护。
有关 PHP 中预定义接口的列表,请参阅我的回答: