Hallo Rolf,
zum Verständnis des Geschehens wäre es wohl wesentlich sinnvoller, wenn Du vor jeder Logik erstmal loggst, mit welchen Argumenten deine Funktion aufgerufen wird.
Ok, einverstaanden.
Die Abfrage ist unnötig. PHP initialisiert eine static-Variable nur beim ersten Aufruf der Funktion.
Alles klar. nehm ich raus.
Ansonsten ist die Funktion - finde ich - Kraut und Rüben.
Mir gefällt sie auch nicht.
Und sie macht ja auch nicht, was ich eigentlich will.
Der Parameter $set_get ist ein drohender Unfall. Der Wert "set" addiert, entgegen seiner suggerierten Funktion. Der Wert "overwrite" setzt dagegen etwas. Und mit "get" bekommst Du einen aufsummierten Betrag über die Seiten hinweg, aber laut Plan nur dann, wenn's vorher mal einen Overwrite gab.
Na, nicht ganz.
Den kummulierten betrag erhalte ich nur dann, wenn es zuvor keinen Overwrite gab.
Ansonsten kriegst Du den Wert zurück, den Du schon mitgegeben hast.
Genau.
Und du gibst eine $Art hinein, die Du aber gar nicht verwendest. Hä?!
Das war nur für frühere Logs da, damit ichs zuordnen konnte.
Wenn Du pro Seite was aufsummieren willst, dann mach dafür eine "add" Operation (und nenn $get_set dann auch $operation oder so). Wenn Du auf der Seite was von dieser Summe abziehen willst, mach eine "sub" Operation und rechne nicht außerhalb nochmal rum. Lass "get" den Wert für die aktuelle Seite zurückgeben, sofern das überhaupt nötig ist, und für die Summe über alle Seiten mach eine "total" Operation. Ich glaube nicht, dass Du Dir dafür merken musst, ob es mal einen "overwrite" gegeben hat.
Versuche ich mal, so umzusetzen und meld mich dann wieder zurück.
Frage ist auch, ob eine Funktion mit static-Variablen wirklich Mittel der Wahl ist. Warum keine Klasse mit Methoden add, subtract, getPage und getTotal. Davon erzeugst Du ein Objekt und rufst bei Bedarf die Methode auf. Dieses Objekt kannst Du, wenn es kompliziert ist, das herumzureichen, auch an das FPDF-Objekt anpappen. Du könntest auch eine Klasse von FPDF ableiten, um das zu managen.
Bin ich nicht mehr fit genug, um das oo zu programmieren. Ich versuchs erstmal so, wie Du zuvor gesagt hattest.
Jörg