Doctrine Entity验证(Setter方法验证或事件驱动)

时间:2013-07-10 14:31:21

标签: php oop validation model doctrine-orm

今天出现了一个非常有趣的主题,有两个观点。

使用Doctrine实体

  1. 是否应在调用setter方法时完成数据验证?即在setFieldName()方法内部,或
  2. 实体是否应作为整体验证有效数据when an event is triggered on an entity
  3. 是否有正常经过验证的理论和/或观点?

1 个答案:

答案 0 :(得分:0)

我认为没有“正常”/标准的方法可以解决这个问题 - 我想这取决于你的需求。我可以告诉你我的观点: 对我来说,数据验证应该尽快在setter上完成。通过这种方式,您不能拥有一个包含无效数据集的实体,并且当您要继续存在时,它将为您节省麻烦。

试着这样想:让我们假设你有一辆汽油车。你去加油站补充。你有两个泵:汽油和汽油。如果没有验证,你可以在那里放置任何类型的燃料,直到你打开发动机,什么都不会发生。但是当你这样做时,如果你输错了类型的燃料,那就太晚了。 Boooooooom!当然实体不会爆炸。;)

话虽如此,有时候无法对单个setter进行验证,因为它可能依赖于另一个属性(尚未设置)。像VATID这样的用户实体,其中必须提供属性user_type(private | company)才能检查并强制公司使用VATID。在这种情况下,你会做一些PrePersist/PreUpdate validation