Hallo CK,
Ich glaube, ich mache das so: jedes Modul/Plugin/Filter wird einen weiteren
Handler definieren muessen, der nur eines macht: einen Pfad zu einer Datei
zurueck geben, die genau definiert, welche Direktiven inwieweit konfigurierbar
sind und welche Werte gueltig sind.
Dabei sehe ich allerdings das Problem, daß das Modul wissen muß, wie es installiert wurde, bzw. wo die Datei liegen darf. D.h. wenn Du das nicht hart verdrahten willst, muß die Datei entweder an einen berechenbaren Ort sein oder es muß wieder eine Konfigurationsdatei her, die dem Modul sagt, wo die andere Datei liegt. Im ersten Fall könnte also auch die Hauptapplikation bzw. auch die Konfigurationsapplikation diesen Pfad berechnen, wodurch der Handler keine Notwendigkeit mehr hat. Und zweiterer Fall ist IMHO nicht gerade elegant, da das Problem ja nur verlagert wird.
Ich würde die Direktiven-Informationen beim Registrieren der Applikation übergeben, wodurch diese sie dann an einen von der Applikation bestimmten Ort ablegt, dmait auch die Konfigurationsanwendung darauf zugreifen kann.
Interessant wäre es m.E., wenn Du es schaffen würdest, die Plugins so zu schreiben, daß sie quasi selbstbeschreibend werden. Irgendwie muß ja das Plugin die für sie vorgesehenen Direktiven auch verarbeiten können. Dafür sind, so denke ich, interne Datenstrukturen notwendig, um die Einstellungen zur Laufzeit verfügbar zu halten. Was wenn diese Datenstrukturen so gestaltet sind, daß eine funktion deren möglichen Inhalt auslesen und in Form einer Direktiven-Definition ausgibt.
Ich habe vor kurzem noch einen anderen Weg beschritten. Es ging dabei um eine Dateninterface für eine C++-Anwendung. Dafür habe ich die Datenstrukturbeschreibung (inklusive UI-Interface-Definition) in einer Konfigurationsdatei abgelegt, und dann mittels Perl-Script den notwendigen C++-Code generiert. Für das dann noch notwendige HTTP-Interface, über das die Daten Synchronisiert werden, wird die Konfigurationsdatei auch gleich mit verwendet.
Ich glaube, XML winkt :)
Wobei mir die Idee mit einer DTD für die Beschreibung der Direktiven recht gut gefällt. Und es hat ja keiner gesagt, dßa eine DTD nicht auch dynamisch generiert werden darf, oder?
Daß sich dann für die Konfigurationsdirektiven XML praktisch aufdrängt, ist ja eine andere Geschichte.
Viel Erfolg bei Deiner Anwendung
Klaus