2012-02-22 54 views
0

我的問題與PHP有關,但它可能與任何其他語言與對象關係映射關聯。回顧一下ORM Class已經擴展了DB Class並且需要它擴展到抽象類的事實

說我有一個類Event擴展DbObject和Exception,它擴展了DbObject,但我希望它們都從Abstract Class TimePeriod擴展。這兩個對象都是ORM對象。

爲什麼?因爲我不想在每種類型的具有開始和結束日期的類上手動編寫getStartTimeStamp()。

現在我正在使用接口,但我覺得它真的很傷害它的乾燥。

我是否簡單地重新設計它,使抽象類TimePeriod擴展Dbobject並實現每個對象的擴展?還是有更好的解決方案?

+0

爲什麼異常類會擴展dbobject類? – 2012-02-22 06:34:14

+0

B/c其生成的ORM對象,它可以運行查詢。 – Eugene 2012-02-22 06:56:08

+0

其中ORM? 'getStartTimeStamp()'會做什麼? – 2012-02-22 07:04:41

回答

1

您面臨的多繼承問題的一般解決方案是聚合/合成。

它也使你的設計更清晰。畢竟異常不可能是一段時間。

所以你想要的是創建一個TimePeriod類,並將該類的對象傳遞給Exception和Event。 然後你可以在時間段對象直接調用getStartTimeStamp()這樣的:

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

或者創建包裝方法和調用它們來代替。

相關問題