使用 Doctrine,是否可以使用魔术方法映射到实际不存在的属性?
我正在使用 YAML 进行映射。
例如,如果我想映射到名为“demo”的属性,但 SomeClass::$demo 实际上并不存在。我想要 __get()、__set()、__isset() 和 __call() 的某种组合来处理 $demo(以及 getDemo() 和 setDemo())并用它们做其他事情。
我试过设置这个,但我收到一个错误:
Uncaught exception 'ReflectionException' with message 'Property My\Bundle\DemoBundle\Entity\SomeClass::$demo does not exist'
我不确定 ReflectionProperty 是否有什么特别之处会导致它错过我的魔法方法,或者我是否可能错过了一个魔法函数。但是,据我所知,ReflectionProperty 应该与它们交互。
有任何想法吗?
更新:
经过进一步调查,ReflectionProperty 构造函数似乎会抛出异常并且不会触发魔术方法。
还有其他人知道将 Doctrine 映射到动态属性的方法吗?
谢谢。
更新 2:
例如我想要完成的事情。
基本上,我有一个通用User
对象,它只包含处理实际成为用户所需的基本属性(角色、密码、盐、用户名等)。但是,我希望能够扩展此对象以添加特定于应用程序和用户的元数据。
所以,假设我创建了一个论坛包。然后我可以动态地连接与用户相关的元数据以供论坛使用。我不想直接把它放在用户包中,因为这样用户包变得不那么灵活了。
如果我能以某种方式动态地向用户注入新数据,则可以将其全部加载到用户的单个查询中,而不必加载到单独的查询中。我知道还有其他一些方法可以做到这一点,我已经探索过,甚至在有限的范围内使用了这些方法。但是,如果我能动态地创建这些关联,那就更好了,这真的不应该是那么困难的飞跃。