Php 在symfony中动态扩展用户实体

Php 在symfony中动态扩展用户实体,php,reflection,doctrine,symfony,traits,Php,Reflection,Doctrine,Symfony,Traits,我有以下情况: 我的项目有一个AppBundle和一个User实体 其他捆绑包添加了更多实体,如地址,Todo,项目,无论什么 这些实体必须属于用户,以便我可以调用$User->getAddresses(),$User->getTodos(),$User->addProject(),$User->setWhatEvers() 这些捆绑包必须保持“可插拔”,这样用户实体就不一定知道它们,而且我不能将todos及其getter/setter等属性直接添加到用户实体中 我考虑过反思,神奇的接受者/

我有以下情况:

  • 我的项目有一个
    AppBundle
    和一个
    User
    实体
  • 其他捆绑包添加了更多实体,如
    地址
    Todo
    项目
    无论什么
  • 这些实体必须属于
    用户
    ,以便我可以调用
    $User->getAddresses()
    $User->getTodos()
    $User->addProject()
    $User->setWhatEvers()
  • 这些捆绑包必须保持“可插拔”,这样
    用户
    实体就不一定知道它们,而且我不能将
    todos
    及其getter/setter等属性直接添加到
    用户
    实体中
我考虑过反思,神奇的接受者/接受者,尽可能多的特点,但没有什么真正符合我的需要

我还考虑过生成
User
实体,但这意味着每次启用或禁用捆绑包时都必须重新生成该实体,并且每次都必须更新数据库


也许有完全不同的说法?

无法评论,所以我必须回答。那么实体关键值方法呢

您可以创建一个通用的getter来过滤与第三方实体保持关系的中间实体

我个人不喜欢它,因为它会变得很难维护


有一个使用这种方法标记内容的捆绑包。您可以使用标签(在您的情况下为用户实体)标记(关联)任何实体(在本例中为您的第三方实体)

这些实体(地址、Todo、项目等)是在一个捆绑包中还是在几个捆绑包中分开?或者添加另一个捆绑包,该捆绑包将具有扩展用户实体的实体,并且将知道其他捆绑包,或者让AppBundle中的用户知道这些其他实体。其他任何解决方案都将是一种变通方法,最终将变得无法阅读。你为什么要把它分开这么多?@mmmm因为我希望外部开发人员能够轻松地添加捆绑包,添加用户字段,而不改变主用户实体。嗯……大声重复这句话,告诉我听起来怎么样。“我想在不更改实体的情况下更改实体”。为什么开发人员不能对用户实体进行更改?你到底打算在那里储存什么?对我来说,问题似乎出在其他地方,而不是用户实体本身。顺便说一句-你可以添加神奇的方法-\uuuuu set,\uuuuuu get等等,但是哦,天哪,几个月后就不想进入那个项目了。对我来说,这就是AppBundle的用途-它知道每个零件库,专注于增长。。。app:d你能进一步解释一下吗,或者给出一个例子,或者你所说的捆绑包?捆绑包是fpn/标签捆绑包。它创建一个名为标记的中间实体,用于保存与标记实体的关系。一切都由TagManager服务管理。不确定这是否完全符合您的需要,但以防万一。。。