同一模式中的不同继承类型

时间:2011-01-13 09:45:36

标签: inheritance symfony1 doctrine concrete-inheritance column-aggregation

我在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

是否有任何危险/警告?

1 个答案:

答案 0 :(得分:1)

只要您避免循环继承或菱形继承,您就可以了,可以使用此

循环继承(显然如下所示

  

A类延伸B.   B类扩展A

OR

  

CLASS A EXTENDS C

     

CLASS B EXTENDS A

     

CLASS C EXTENDS A

钻石形状的继承更加圆润。当发生以下类型的情况时会发生这种情况

  

CLASS A

     

CLASS B EXTENDS A

     

CLASS C EXTENDS A

     

CLASS D EXTENDS B,C