从php中的更多类中获取方法


Getting methods from more classes in php

我有一个基类List几乎是一个纯数组。我有一个订单列表OrderedList,当所有项目都有关于其订单的编号时当复选框位于所有项目之前时,我有一个复选框列表CheckboxList(列表存储布尔值)。

现在我想要一个有序的复选框列表类。所以它应该继承2个类。如何解决此问题?

首先,您应该更喜欢组合而不是继承。这可能是你的"我可以从多个类继承吗"是一个设计缺陷的标志。

无论如何,如果你需要一个"有序复选框列表类",那么结构应该是:

class OrderedList extends List{}
class CheckboxList extends OrderedList{}

此外,我建议在这种情况下避免使用traits,因为php中的traits实际上是解释器辅助的Copy'n'Paste。这并没有明显的好处。

顺便说一句,你可能会看到另一种方法:虽然CheckboxList扩展了List,但你可能有其他对象负责对它进行排序。当然,如果你为List类实现ArrayAccess,你可能只能使用内置的sort()/usort()函数(或ksory()/uksort(),具体取决于你如何存储字段)。。我还以为我真的没试过呢。

PHP当然不支持多重继承。如果您已经做好了准备,可以在PHP5.4中使用traits。否则,请尝试在谷歌上搜索"PHP mixin"以找到一个mixin实现。