由于使用了多态性和重写,面向对象范例允许覆盖这些少数情况。主要工具是方法重写。为了实现这一点,基本案例或 API 功能将被覆盖以涵盖所需的特定功能。例如,我们可以有以下代码:
正如您所看到的,我们用我们的功能扩展了原始库的基本适配器功能。这是可能的,因为我们需要的逻辑包含在受保护的方法中。这使得我们可以使用重写来扩展代码以满足我们的特定需求。这种类型的扩展 API 可以通过将所有方法和属性定义为受保护来实现,以便它们可以在子类中使用。
API理念
如果不首先讨论 API 的理念,就很难量化 API 设计的一个或另一个方面。考虑到当前存在的大量框架和库,可以轻松区分编写良好的框架和库。即使那些写得不好的也可以根据它们所遵循的哲学进行分类。
大多数库或组件的理念有两个主要目标。根据不 合作伙伴电子邮件列表 同的观点,它们可能会变得矛盾。一般来说,我们必须认为两者同等重要。
首先是易用性。一个API能否在开发者中获得成功,通常取决于它的易用性、是否直观以及是否满足大多数需求。另一个是易于扩展。在大多数情况下,编写组件是为了涵盖已知的用例。一般来说,这将满足程序员的大部分需求,但总是存在未知的用例。组件解决已知情况以及允许开发人员扩展它以达到未知情况的能力将决定其扩展的难易程度。
易用性和扩展性往往是相反的。容易使用的东西很难扩展,而容易扩展的东西很难使用。通常造成这种情况的原因是因为试图改善两个方面之一而损害了另一个方面。
尽管 PHP 系统,但 PHP 自动加载器在一些公认约定的帮助下可以为我们提供解决方案。 Zend Framework、Symfony、PHPUnit 或 FuelPHP 等大型项目帮助重申了 PEAR 在命名标准上设定的约定。通过使用此命名方案,已经在其他项目中使用过此类方案的开发人员将会熟悉您的代码。优点是这些开发人员已经知道在目录结构中到底在哪里可以找到类。