我有一个基类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实现。