我想让实体记录最近修改过实体的用户(最好是他的 ID)。我认为一个漂亮的实体有一个 getModifier() 方法,但没有 setModifier() ,因为它是由类作为内部事务处理的。我会使用一些 prePersist 来使用用户 ID 更新实体。所以这里有两个主要问题:
1) 从技术上讲,如何在实体的 prePersist 中获取当前用户的 ID?
2)哲学。我找到了很多答案,建议我重新考虑我的模型,不要依赖于存储在其中的数据以外的任何东西。我看不出将实体与世界其他地方隔离开来是多么理智:请看这里关于实体可以做什么的两个对比。访问服务以获取可以存储某些缓存输出的文件夹名称被认为是非法的;虽然使用文件抽象类写入文件系统是可以的;我认为后者对文件系统做出了更多假设。访问当前用户的身份被认为是非法的;同时将当前时间戳放在实体上是可以的;所以(可能缺少)用户的概念是坏的,而时间的概念是好的?如果不依赖模型本身以外的任何东西的概念是有效的,那么还有人敢使用 DateTime 函数吗?(请不要说 PHP 的服务总是可以访问的,因为一些缺少的设置/扩展很容易导致这些失败。)我看不到如何在遵守如此严格的限制的同时将任何逻辑构建到实体中,以及如何避免实体最终只是数据(通过这种级别的封装和信息隐藏,这个实体模型提供给我的只是数组)。谁能指出我不能使用的模型环境元素和那些被认为是合法的元素之间的特殊区别是什么?并不是说 PHP 的服务总是可以访问的,因为一些缺少的设置/扩展很容易导致这些失败。)我看不到如何在遵守如此严格的限制的同时将任何逻辑构建到实体中,以及如何避免实体结束最多不过是数据(通过这种级别的封装和信息隐藏,这个实体模型提供给我的只是数组)。谁能指出我不能使用的模型环境元素和那些被认为是合法的元素之间的特殊区别是什么?并不是说 PHP 的服务总是可以访问的,因为一些缺少的设置/扩展很容易导致这些失败。)我看不到如何在遵守如此严格的限制的同时将任何逻辑构建到实体中,以及如何避免实体结束最多不过是数据(通过这种级别的封装和信息隐藏,这个实体模型提供给我的只是数组)。谁能指出我不能使用的模型环境元素和那些被认为是合法的元素之间的特殊区别是什么?以及如何避免实体最终只是数据(通过这种级别的封装和信息隐藏,这个实体模型提供给我的只是数组)。谁能指出我不能使用的模型环境元素和那些被认为是合法的元素之间的特殊区别是什么?以及如何避免实体最终只是数据(通过这种级别的封装和信息隐藏,这个实体模型提供给我的只是数组)。谁能指出我不能使用的模型环境元素和那些被认为是合法的元素之间的特殊区别是什么?