0
今天出現了一個非常有趣的主題,有兩個觀點。學說實體驗證(安裝人員方法驗證或事件驅動)
使用Doctrine實體
- 如果該數據的驗證在點完成時,setter方法被調用?即在setFieldName()方法內部,或者
- 實體應該作爲整體進行有效數據驗證when an event is triggered on an entity?
是否有正常或久經考驗理論和/或觀點對嗎?
今天出現了一個非常有趣的主題,有兩個觀點。學說實體驗證(安裝人員方法驗證或事件驅動)
使用Doctrine實體
是否有正常或久經考驗理論和/或觀點對嗎?
我不認爲有一個「正常」/標準的方式去這個 - 我想這取決於您的需求。我可以告訴你我的觀點: 對於我來說,數據驗證應該在setter上完成 - 也就是 - 儘快完成。這樣你就不能擁有一個設置了無效數據的實體,並且當你要堅持時它會爲你節省頭痛。
試着這樣想:假設你有一輛汽油車。你去加油站補充。你有兩個泵:汽油和汽油。如果沒有驗證,您可以將任何類型的燃料放在那裏,直到您開啓發動機時什麼都不會發生。但是當你這樣做的時候,如果你輸錯了燃料,那就太晚了。 Boooooooom!當然實體不會爆炸;)
話雖如此,有時不可能對單個setter進行驗證,因爲它可能依賴於另一個屬性(尚未設置)。類似於用戶實體的VATID,其中屬性user_type(private | company)必須可用以便能夠檢查並強制VATID供公司使用。在這種情況下,你會做一些PrePersist/PreUpdate validation。