Ich finde dazu nichts Hilfreiches und setze mal meine Sachen hier rein.
Zum Problem.
Am wenn das übergeordnete Objekt Zerstrört wird, sollen alle Kind-Objkte zusammen gespeichert werden. (es kann auch eine andere Aktion sein, die ausgeführt werden soll)
Um das Speichern zu beschleunigen, soll nur dann gespeichert werden, wenn sich tatsächlich etwas geändert hat. Es muss also eine Beziehung vom Kind zum übergeordneten Objekt geben, damit dieses eine Änderung Bekannt machen kann.
Das Eigentliche Problem tritt währen der "global destruction" am Ende des Scriptes. Auch hier soll automatisch gespeichert werden.
Aber Perl hat schon angefangen die Kindobjekte zu zerstören, so das der Baum nicht mehr Vollständig ist, wenn es zum speichern kommt.
Interessanter weise kommt es nur dann zu dem Problem wenn das Kind-Objekt irgendeine Refenz auf das Übergeordnete Objekt hat.
Beispiel:
more (17.2kb)
Auch wenn man es über eine Sub-Referenz versucht tritt das Problem auf:
more (17.7kb)
Man muss dann wohl auf Referenzen zu verzichten.
Eine Möglichkeit:
more (19.2kb)
Der Nachteil dabei ist, dass das speichern von vielen Objekten, die auch noch tief verschachtelt sein können, sehr langsam wird. Immerhin müssen im Extremfall alle Objekte abgefragt werden, ohne dass gespeichert werden muss.
Eine bessere Lösung ist dies:
more (16.5kb)
Man kann es eine symbolische Referenz nennen, was da benutzt wird.
Last edited: 2011-02-10 10:48:38 +0100 (CET)