绕过ORM类已经扩展了DB类的事实,您需要它从抽象类扩展


Going around the fact that ORM Class already extends DB Class and you need it to extend from Abstract class

我的问题与PHP有关,但它可能与任何其他具有对象关系映射器的语言有关。

假设我有一个扩展DbObject的类Event和一个扩展了DbObject的Exception,但我希望它们都从抽象类TimePeriod扩展。这两个对象都是ORM对象。

为什么?因为我不想在每种有开始和结束日期的类上手动编写getStartTimeStamp()。

现在我正在使用接口,但我觉得这真的很伤脑筋

我只是简单地重新设计它,使抽象类TimePeriod扩展Dbobject并实现从它扩展的每个对象吗?或者有更好的解决方案吗?

您面临的多继承问题的一般解决方案是聚合/组合。

它还使您的设计更加清晰。毕竟,异常不能是一个时间段。

因此,您需要创建一个TimePeriod类,并将该类的对象传递给Exception和Event。然后,您可以直接对时间段对象调用getStartTimeStamp(),如下所示:

$event->getTimePeriod()->getStartTimeStamp();

或者创建包装方法并调用它们。