我想为我的应用程序构建一个可扩展的模型,第三方开发人员可以在不修改我的模型本身的情况下动态地向我的模型添加字段。我认为这可以通过"X有Y"来实现,其中实体Y中没有指定字段X。因此,第三方开发者可以简单地将他们的实体放在文件夹中,让Y发现它。让我举一个更具体的例子:
User
- Id
- Name
比方说,我想添加一个用户有很多帖子的帖子集合。如果不在用户模型中添加Posts字段,我怎么能做到这一点呢。我一直在读关于单向OneToMany等的文章,但不确定这是否会使我的模型易于扩展?你们会怎么做到这一点?
解析目标实体侦听器允许您在运行时重新定义关联。它基本上允许您映射如下内容:
@ORM'ManyToOne(targetEntity="My'Namespace'UserInterface")
正如您所看到的,将接口映射为目标实体没有多大意义。当您告诉每个My'Namespace'UserInterface
都必须替换为Other'Namespace'User
引用时,它会变得非常有用。
这将允许其他开发人员替换关联对象的实现,只实现其接口,然后在某个位置设置配置键,以便仅在需要时覆盖映射。
即使没有接口,它也能工作,但我强烈建议使用合同定义的清晰的API。