Es geht um die berühmte Class Var, die in der Initclass gesetzt wird.
ist jetzt verkürzt, nur damit ihr versteht, was ich meine.
Code: Alles auswählen
class datenbank
CLASS METHOD initClass
CLASS VAR aDb SHARED
CLASS VAR oId SHARED
endclass
CLASS METHOD datenbank:initclass()
IF ::aDb == NIL
::aDb := {}
::oId := ids():new()
::oId:db_oeffnen(,,,.F.)
ENDIF
RETURN self
Das klappt auch so auf den ersten Blick, wie ich mir das vorstelle. Nachdem ich aber die ersten Gehversuche damit gestartet habe, kam mir der Gedanke: "Wie lange bleiben eigentlich diese CLASS VAR erhalten? Bis das Programm beendet wird? Diese Klasse datenbank wird über LOCAL Instanzen aufgerufen, die ja dann am Ende einer Funktion eigentlich nicht mehr da sind. Wenn ich aber diese Funktion verlasse, in der die LOCAL Vars sind und sie wieder aufrufe und dann die LOCAL Vars neu instanziiere, sind die Werte immer noch da, sprich die INITCLASS wird auch nicht wieder aufgerufen. Ist das jetzt Zufall, oder habe ich nur nicht lange genug gewartet, bis sie vom GB zerstört werden? Oder sagt das System sich: "1x aufgerufen, das genügt für immer".?