Doctrine2:单表继承中的父类是否应该是抽象的?

时间:2012-05-09 21:39:20

标签: php orm doctrine-orm

我在Doctrine2应用程序中为我的类编写构造函数,比如说Fruits,Apple,Bananas。

Fruits是父类,其中ApplesBananas使用字段Fruits上的单个表继承从type继承。

在Doctrine2文档页面上,提供了一个用于单表继承的示例。如果我们总是使用单表继承进行区分,那么基类Fruits是否应该是抽象的,因为必须始终设置鉴别器字段?如果是这样,Fruits的构造函数是否也应受到保护以防止此行为?

1 个答案:

答案 0 :(得分:3)

由于您的父类“水果”中没有您需要重新声明的方法,我认为没有明确需要将其声明为抽象。

此外,您可能会发现一个用例,您可能希望保留一个“Fruit”实例(不确定它是什么类型的水果)。将父级标记为抽象将阻止您执行此操作。

也许水果是一个坏榜样。但是他们在文档中的人员示例更好。员工将继承人员定义。但是我可能还想坚持一个Person的实例,不确定类型。因此@DiscriminatorMap中的“person”=“Person”。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance