Thread Datenvalidierung mit Transaktion - Wie am besten Ablauf verketten? (10 answers)
Opened by sid burn at 2009-05-29 14:17

sid burn
 2009-05-29 15:00
#122073 #122073
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
2009-05-29T12:32:53 GwenDragon
Das ganze in ein eval zu verpacken ist ja auch in anderen Sprachen wie mit try/catch üblich.

Ja das soll man später ja auch machen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
eval {
  $validate
    ->assemble()
    ->check(...)
    ->check(...)
    ->check(...);

    # Code wenn alle Checks okay waren.
};
if ( $@ ) {
  # Fehler aufgetreten
  # Liste der Exceptions durchgehen und schauen welche Felder fehelrhaft waren
}

Nur muss der letzte check ja eine Exception werfen. durch das assemble() kann man ja letztendlich umschalten das man Fehler erstmal abfängt. Aber der letzte check muss ja eine exception werfen die den eval Block beendet.

Werfe ich einfach bei allen eine exception (default) dann wäre ich aber nicht in der lage eine komplette liste zu erhalten welche felder alles invalide sind, sondern ich würde immer nur das erste feld zurück bekommen.

Quote
Du kannst natürlich alle Funktionen hintereinander ablaufen lassen, ein Flag mitführen, bei jeder fehlgeschlagenen Aktion hochzählen. Wenn dieses Flag immer auf 0 ist, dann kannst du die Transaktion starten, ansonsten alles rückgängig machen.

Das mit dem Flag mitführen hatte ich mir so auch schon so ähnlich gedacht, nur das eben alle Exceptions die geworfen wurden erstmal gesammelt werden. Der letzte Check muss dann allerdiengs nicht nur sammeln sondern muss dann eine echte Exception werfen, damit der eval Block beendet wird.

Okay eine echte Transaktion ist es nicht weil nichts mehr Rückgängig gemacht wird (daher sagte ich ja das der titel nicht so ganz passt, wenn dir eine bessere beschreibung einfällt dann ändere den titel einfach nochmal)
Last edited: 2009-05-29 15:06:52 +0200 (CEST)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Datenvalidierung mit Transaktion - Wie am besten Ablauf verketten?