在这种情况下,学说继承还是只是协会?
Doctrine inheritance or just association in this case?
我在将 Class 图转换为 symfony 代码时遇到了这个问题。我有一个项目 class 和一个项目类型 class。通常你会说一个项目是某种项目类型,这意味着继承 (IS A) 关系。现在关于继承的学说:
A mapped superclass is an abstract or concrete class that provides
persistent entity state and mapping information for its subclasses,
but which is not itself an entity.
想法是可以制作不同的项目类型(它们应该是可管理的)。如果原则在这个例子中说 ProjectType 不是一个实体,那么我就不能实例化它们。所以我想到了一个OneToMany关联。这是正确的 OOP 吗?
您可以在抽象中指定实体之间的关系class,如果具体实体中的关系发生变化您可以覆盖它。
例如,您有一个名为 Project 的抽象 class,它与 ProjectType 有很多关联关系。
然后创建两个从 Project 扩展的实体,分别称为 GreenProject 和 RedProject。 GreenProject 只能关联一个 ProjectType,因此在基础 class 中定义的关系是可以的。
RedProject 可以有多个 ProjectType,因此是多对多关系。然后,您必须通过在 RedProject class 中重新声明 $projectType 属性 并使用适当的注释来覆盖基础 class 中的现有关系。
例如,您可以在一个包中分发您的超类,并使用它们在您的 AppBundle 中扩展它们。这由 FosUserBundle(用户 class)、FosOauthBundle(例如客户端和令牌 classes)和其他人使用。
我在将 Class 图转换为 symfony 代码时遇到了这个问题。我有一个项目 class 和一个项目类型 class。通常你会说一个项目是某种项目类型,这意味着继承 (IS A) 关系。现在关于继承的学说:
A mapped superclass is an abstract or concrete class that provides persistent entity state and mapping information for its subclasses, but which is not itself an entity.
想法是可以制作不同的项目类型(它们应该是可管理的)。如果原则在这个例子中说 ProjectType 不是一个实体,那么我就不能实例化它们。所以我想到了一个OneToMany关联。这是正确的 OOP 吗?
您可以在抽象中指定实体之间的关系class,如果具体实体中的关系发生变化您可以覆盖它。
例如,您有一个名为 Project 的抽象 class,它与 ProjectType 有很多关联关系。
然后创建两个从 Project 扩展的实体,分别称为 GreenProject 和 RedProject。 GreenProject 只能关联一个 ProjectType,因此在基础 class 中定义的关系是可以的。
RedProject 可以有多个 ProjectType,因此是多对多关系。然后,您必须通过在 RedProject class 中重新声明 $projectType 属性 并使用适当的注释来覆盖基础 class 中的现有关系。
例如,您可以在一个包中分发您的超类,并使用它们在您的 AppBundle 中扩展它们。这由 FosUserBundle(用户 class)、FosOauthBundle(例如客户端和令牌 classes)和其他人使用。