Frage

Ich Schaffe einen Rahmen, in PHP und müssen ein paar Konfigurations-Dateien.Einige dieser Dateien wird unvermeidlich haben eine große Anzahl von Einträgen.

Welches format wäre am besten für diese config-Dateien?

Hier ist mein Quantifizierung der besten:

  1. Leicht durch PHP geparst.Es wäre schön, wenn ich Sie nicht haben zu schreiben jeden parsing-code, aber dies ist nicht ein deal breaker.
  2. Bleibt leicht lesbar, auch wenn es eine große Menge der Einträge
  3. Ist ein weit verbreiteter standard, keine benutzerdefinierten Formate
  4. Lapidare geschätzt wird

Ich begann mit XML, aber schnell aufgegeben, aus offensichtlichen Gründen.Ich habe gedacht, JSON und YAML, sondern wollte sehen, was es sonst noch gibt.

War es hilfreich?

Lösung

Wie über eine INI-Datei-format?Es ist ein de-facto-Konfigurationsdatei standard-und PHP hat eine eingebaute parser für das format:

parse_ini_file

Andere Tipps

YAML ist eine gute option:http://www.yaml.org/

Es ist sehr einfach und leistungsstark, auch

Ruby Projekte verwenden es viel für die Konfiguration.

Warum spielst du nicht eine PHP-Datei für die Konfiguration?

Die Vorteile sind klar:

  • mögliche Fehler erwischt wird automatisch
  • keine Notwendigkeit zu verwenden/erstellen Sie einen benutzerdefinierten parser
  • seine weit verbreitete Verständnis von PHP-Programmierer
  • Sie können einige benutzerdefinierte Logik, zum Beispiel mit benutzerdefinierten Konfigurationen für Entwicklung, andere für die Produktion, etc

Andere frameworks wie Django und rails die Verwendung einer config-Datei, die ein Skript.

Eine andere Möglichkeit wäre die Verwendung von JSON und zu verwenden json_encode und json_decode.

Sie würde in der Lage sein zu verwenden, reicher Daten-Strukturen in Ihrem Konfigurations-Parameter.

Personly ich mag zu tun, config-Daten in eine Klasse.

class appNameConfig {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

dann, Sie zu verwenden, alle Sie haben zu tun ist

$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

zum ändern der config alles, was Sie tun müssen, ist die Datei Lesen mit der Klasse in der ich eine Funktion wie diese:

function updateConfig($parameter, $value) {
    $fh = fopen('config.php', 'w+');
    while(!feof($fh)) {
        $file .= fgets($fh);
     }
    $fileLines = explode("\n", $file);
    for($i=0;$i<count($fileLines);$i++) {
        if(strstr($fileLines[$i], $parameter)) {
            $fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
         }
     }
    $file = implode("\n", $fileLines);
    fwrite($fh, $file);
    fclose($fh);
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top