Ich habe eine einfache Form, die sehr lange dauert:
%Vor% Nach der Installation von xhproof
und der Untersuchung des Problems habe ich festgestellt, dass die Validierung viel Zeit in Anspruch nimmt.
Symfony2's Dokumentation über gültige Annotation ist nicht sehr klar:
traverse
Geben Sie Folgendes ein:
boolean
Standard:true
Wenn diese Einschränkung auf eine Eigenschaft angewendet wird, die ein Array von enthält Objekte, dann wird jedes Objekt in diesem Array nur dann validiert, wenn dies der Fall ist Option wird auf "True" gesetzt.
deep
Geben Sie Folgendes ein:
boolean
Standard:false
Wenn diese Einschränkung auf eine Eigenschaft angewendet wird, die ein Array von enthält Objekte, dann wird jedes Objekt in diesem Array rekursiv validiert Wenn diese Option auf "True" gesetzt ist.
Quelle: Ссылка
Meine Frage ist: Was ist der Unterschied zwischen den beiden Optionen und welche Werte garantieren mir eine bessere Leistung?
Wenn Sie den Standardwert belassen, verwenden Sie traverse
link Bedecken Sie alle Objekte innerhalb des verschachtelten Arrays und ignorieren Sie alle Arrays von Objekten, die es innerhalb dieses übergeordneten Objekts sieht, dh überspringt die Validierung für sie. Es muss auch nach allem suchen, was eine Instanz von \Traversable
verwendet deep
den Link , um in diesen Objekten nach einer verschachtelten Auflistung zu suchen. Es könnte sogar die Validierung für diejenigen überspringen, die diese Kriterien nicht erfüllen, wie Art eines Filters also sei vorsichtig damit.
Andernfalls, wenn Sie einen Unterschied in der Leistung sehen, ist entweder die traverse
schlecht programmiert oder die Suche nach Instanzen von Traversable ist schwer zu treffen.
Wenn Sie kein Traversable benötigen, sollten Sie in Ihrem Fall nur deep
verwenden, da es schneller ist, aber stellen Sie sicher, dass Ihre Ergebnisse nicht abgeschnitten werden.
Tags und Links php symfony validation