我的问题与PHP有关,但它可能与任何其他具有对象关系映射器的语言有关。
假设我有一个扩展DbObject的类Event和一个扩展了DbObject的Exception,但我希望它们都从抽象类TimePeriod扩展。这两个对象都是ORM对象。
为什么?因为我不想在每种有开始和结束日期的类上手动编写getStartTimeStamp()。
现在我正在使用接口,但我觉得这真的很伤脑筋
我只是简单地重新设计它,使抽象类TimePeriod扩展Dbobject并实现从它扩展的每个对象吗?或者有更好的解决方案吗?
您面临的多继承问题的一般解决方案是聚合/组合。
它还使您的设计更加清晰。毕竟,异常不能是一个时间段。
因此,您需要创建一个TimePeriod类,并将该类的对象传递给Exception和Event。然后,您可以直接对时间段对象调用getStartTimeStamp(),如下所示:
$event->getTimePeriod()->getStartTimeStamp();
或者创建包装方法并调用它们。