我有一个基类List
几乎是一个纯数组。
当所有项目都有关于其订单的编号时,我有一个有序列表OrderedList
当复选框位于所有项目之前时,我有一个复选框列表CheckboxList
(列表存储一个布尔值)。
现在我想要一个有序的复选框列表类。所以它应该继承2个类。如何解决这个问题?
答案 0 :(得分:2)
首先,如果全部,你应该赞成composition over inheritance。可能是你的“我可以从多个班级继承”是一个标志,如果设计缺陷。
无论如何,如果你需要一个“有序的复选框列表类”,那么结构应该是:
class OrderedList extends List{}
class CheckboxList extends OrderedList{}
此外,我建议在这种情况下避免使用特征,因为php中的 Traits 实际上是解释器辅助Copy'n'Paste。这没有明显的好处。
顺便说一下,你可能会看到另一种方法:当CheckboxList扩展List时,你可能还有其他一些对象负责对它进行排序。如果你为List
课程实施ArrayAccess
,你可能只能使用内置的sort()
/ usort()
函数(或ksory()
/ {{ 1}}取决于你如何存储字段)..以为我实际上没有尝试过。
答案 1 :(得分:1)
PHP当然不支持多重继承。如果您已准备好迎接前沿,您可以在PHP 5.4中使用特征。否则,请尝试使用Google搜索“PHP mixins”来查找mixin实现。