0

据我了解,如果我想使用继承原则,需要在超类映射信息中列出所有子类。

手册指出:

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
 */
class Person
{
    // ...
}

@InheritanceType、@DiscriminatorColumn 和 @DiscriminatorMap 必须在作为映射实体层次结构的一部分的最顶层类上指定。

当我正在开发一个将被多个应用程序重用的 symfony 包时,这是一个主要问题。我想提供可以由应用程序扩展的超类。这意味着在我实现超类时子类是未知的。

问题在 Symfony2中创建具有可扩展实体的便携式 Bundle 解决了同样的问题。

这里的问题是:我必须有哪些选择来解决这个限制?

在我有这种需求的领域中,有一个订单。应用程序应该有可能实现它自己的订单项子类型。我想出了这个解决方案,但这需要很多额外的类才能获得类似继承的东西。

http://www.gliffy.com/pubdoc/4293547/L.png

我很高兴看到更好/更短的解决方案。

4

0 回答 0