从php中的更多类获取方法

时间:2012-03-18 15:43:35

标签: php oop class inheritance

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

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

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实现。