Frage

Ich arbeite an Code Refactoring der Konfigurationsdatei Laden Teil in PHP. Ich war mit Dateien von mehreren Quellen ‚ini‘ früher, aber jetzt plane ich für einzelne XML-Datei zu gehen, die alle Konfigurationsdetails des Projektes werden enthalten. Das Problem ist, wenn jemand Konfigurationsdatei in ini oder DB oder irgendetwas anderes und nicht der Standard eines (in diesem Fall XML) will, sollte mein Code, dass ein Teil behandeln.

Wenn jemand will, wie ini für andere Konfigurationsoption gehen, er wird ini-Datei ähnlich wie meine XML-Konfigurationsdatei und meine Konfigurationsmanager erstellen sollte darauf alles wie Parsing nehmen, im Cache gespeichert werden. Dafür brauche ich kann ein Mechanismus richtige Schnittstelle für meine Konfigurationsdaten sagen, wo das Geschäft zugrunde liegenden Daten kann alles (XML, DB, ini usw.) getätigt wird auch auf diesen zugrunde liegenden Speichern und zu jeder Zeit in der Zukunft abhängig sein, ich will nicht, es sollte dies sein erweiterbar auf andere Dateiformate.

War es hilfreich?

Lösung

Unter der Annahme, Sie wollen, um eine Klasse verwenden, um alle zu handhaben, haben Sie 3 Möglichkeiten:

  1. Haben Sie eine Basisklasse genannt etwas wie ReadConfigurationBase dann 3 Implementierungsklassen, ReadConfigurationXML, ReadConfigurationINI und ReadConfigurationDatabase und Sie würden das Recht wählen haben
  2. Wie oben, aber eine Fabrik unter Verwendung von in. Wie bestanden etwas basiert weg zu wählen, ob Sie config.xml passieren würde es wissen ReadConfigurationBase zurückzukehren implementiert ReadConfigurationXML
  3. Haben Sie eine Klasse namens ReadConfiguration und es wirkt als Schritt 2, aber schafft, enthält, und besitzt, die drei anderen Klassen.

Die drei Nicht-Basisklassen würden einfach wissen, wie diese Art von Konfigurationsdatei zu lesen, und die Informationen zurück in allgemeiner Art und Weise passieren. denken entlang der Linien einer Schnittstelle. Sie wissen, dass Sie die Daten bekommen können, aber Sie mich nicht, wie

würde ich vorschlagen, die Option 3, da es das Leben am einfachsten machen würde. Sie möchten gerne ein wenig Änderung zu tun haben, jedes Mal wenn Sie wollen eine Speichermethode hinzufügen, aber das wäre nur ein wenig in die ReadConfiguration Klasse hinzufügen.

Es gibt einen Weg Sie es 100% dynamisch machen könnte, aber das würde die Sache noch komplizierter, und ich glaube nicht, Sie brauchen es für diese wirklich.

Andere Tipps

Hier finden Sie aktuelle Zend_Config . Es bietet Adapter für Arrays, XML und Inis. Wie alle Komponenten in Zend Framework, kann es verwendet, um aus dem verbleibenden Rahmen isoliert werden. Auch wenn Sie es nicht verwenden wollen, ist es gut gestaltet und Sie vielleicht ein paar Ideen für Ihre eigenen Konfigurationsmanager von ihm erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top