Frage

Ich schreibe eine PHP-Anwendung, die die Möglichkeit, Einstellungen über eine Web-Schnittstelle zu bearbeiten haben. Ich wollte nicht für den Benutzer (und tatsächlich, es wird nur sein Administratoren ) in der Lage sein, die Datei nach oben in einem Texteditor zu laden, sondern sie machen eine Änderung eine Form verwendet wird, und dass die Einstellungsdatei ändern (und andere Dinge tun als auch ).

In diesem Stadium in der Entwicklung, werden die Einstellungen in einer PHP-Datei gespeichert, zum Beispiel:

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

Allerdings Parsing-Arrays (und sie komplizierter (das heißt mit mehreren Ebenen verschachtelt) als der oben), scheint nicht so viel Spaß gemacht. Und weil bestimmte Einstellungen hinzugefügt und entfernt werden können, um die gesamte Datei zu lesen, und dann alle Einstellungen erneut auszuschreiben, scheint nicht Spaß auch nicht.

Was sind die Vor- und Nachteile der folgenden Formate verwenden? (Und alle anderen, die ich verpasst):

  • Benutzerdefinierte XML
  • INI (in der Lage zu verwenden parse_ini_file)

(Unter Verwendung eine Datenbank nicht geeignet wegen für das Projekt der Anforderungen. Ich verstehe, eine Datenbank, in vielen Situationen bevorzugt werden würde, nur nicht in diesem Fall.)

Wenn Sie nicht in der Lage waren, eine Datenbank zu verwenden, und mußten Einstellungen zu speichern, die mit einem Web-Interface bearbeitet werden könnten, was würden Sie tun?

(Hinweis: Dies ist eine andere Frage auf dieses , wo die Einstellungen nicht geändert werden kann, dann ist es PHP-Datei den ganzen Weg. Und ja, das Setup noch eine PHP-Datei mit den richtigen Einstellungen auszuschreiben.)

War es hilfreich?

Lösung 2

OK, ich habe keine Art von Antwort bekomme ich suchte. Hier ist das, was ich erwartet hatte.

INI

  • Speichern von Einstellungen in einer INI-Datei kann für einfache Einstellungen sinnvoll sein, die der Benutzer von Hand bearbeiten möchten.
  • ist jedoch komplexen Erstellen von Arrays nicht einfach, und würde einige Klimmzüge erfordert die Überschrift ist auf welcher Ebene des Arrays zu verstehen.
  • Reservierte Wörter, die nicht überall in der Datei verwendet werden muss, sind: ja, nein, wahr und falsch, dies problematisch sein könnte.
  • Konstanten können in der Datei verwendet werden.
  • gebaut Nein in Verfahren zum Schreiben aus INI-Dateien.

XML

  • Kann die SimpleXML-Erweiterung verwenden, die drehen XML in ein Objekt „einen sehr einfachen und leicht verwendbaren Toolset bietet“, die dann verarbeitet werden, können die normalen Methoden.
  • Ermöglicht die Verwendung von sehr komplexen Arrays.
  • Mögliche von Hand zu bearbeiten, falls erforderlich.
  • Kann externe Tools verwenden, um die Gültigkeit der Datei zu überprüfen.
  • Viele viele XML-Prozessoren verfügbar für PHP.

YAML

Denken Sie daran: keine Datenbank. Benötigt der Lage, komplexe Arrays zu verwenden.

Andere Tipps

Wenn Sie die Verwendung von XML nicht verpflichtet sind, können Sie gerne YAML betrachten. Ich habe es nur mit Ruby aber ein schneller Google schlägt vor, es gibt ein paar Optionen für die PHP-Unterstützung. TBF, die Links dort sind einige Argumente gegen mit YAML mit PHP, aber YMMV.

Ich würde die Idee von jemandem nicht mag die direkten Zugriff auf Einstellungen hat, so ist es wichtig, eine Schnittstelle zu schaffen, als Puffer zu wirken, gezielte Angriffe zu verhindern und saubere Ausgabe zu gewährleisten.

Mit dem im Verstand die Wahl der Server-Seite-Format ist überhaupt nicht wichtig, solange Sie damit Schnittstelle korrekt alle anderen Probleme umgangen werden können.

Ich würde eine benutzerdefinierte XML-Datei empfehlen, auf diese Weise Ihre Konfiguration gut skalieren und Sie können PHP XML-Bibliotheken verwenden, um Zugang zu erhalten.

Ein kurzes Beispiel:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>

PHP in Funktionen zum Bearbeiten und Analysieren von INI-Dateien erstellt hat, die ein Klartext-Format zum Speichern von Programmeinstellungen verwenden.

Ich habe einen zweistufigen Ansatz verwendet. Die Variablen und ihre Namen werden in der Datenbank mit einer Schnittstelle gespeichert, die dem Benutzer die Möglichkeit, sie zu ändern gibt. Wenn sie ihnen eine Datei ändern wird auf dem Server gespeichert und dann aus der Anwendung (Die Änderungen alos zurück an die DB gespeichert werden) verwiesen throught. Macht die Aktualisierung einfach und macht Backups einfach - keine Notwendigkeit, ein Backup der Dateien, nur ein Backup der Datenbank. Die resultierenden Dateien sind nur .inc Dateien, die im Format $ Variablenname = ‚Variable‘ sind;

Und warum nicht schlicht php?

configure-form.php

Form method=POST action='configure.php',

Eingabefelder ab. name='upload' value='<?php echo UPLOAD; ?>'

a configure.php-Datei:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

und dort haben Sie es. Einfache PHP, die für Sie configure-Datei erstellt.

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