26

我在symfony項目中使用Doctrine 1.2, ,我正在考慮在架構中混合具體和列聚合繼承類型: 列聚合讓我可以在父表中進行查詢並獲取父母和孩子的記錄,而具體的繼承讓我得到一個更乾淨的模式。 另外,混合將在同一個繼承鏈中。 我該如何編寫架構文件?像以下一樣?同一架構中的不同繼承類型

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 

或者這樣也許:

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: concrete 
D: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 


E: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   2 

是否有任何危險/警告?

+0

貌似沒有人有經驗分享。我有興趣知道這是怎麼回事 - 我最初的想法是,它不會很好。 – benlumley 2011-01-14 08:34:08

+0

@benlumley嗯,我們已經嘗試過了,而且我們正在測試,現在看來它工作得很好。如果我們遇到一些問題,我會編輯我的文章並添加評論。我們嘗試了第二個模式的版本。 – greg0ire 2011-01-14 08:42:56

回答

1

只要避免圓形繼承或菱形繼承你就可以了,並且可以使用這個

圓形繼承(顯然看起來如下

類A延伸乙 B類延伸A

CLASS A擴展了C

CLASS B延伸的

C類延伸的

鑽石異型繼承是關於多一點圓。它發生時的條件如下式發生

CLASS A

CLASS B延伸的

C類延伸的

CLASS d EXTENDS B,C