Symfony YAML
Der smarte Weg Konfigurations-Dateien zu erstellen

Martin Herr, 19.06.2009 - 08:00 | Keine Kommentare |  |  Teilen

symfony_yamlJeder Webentiwickler kennt das Problem. Da möchte man nur mal schnell ein kleines PHP-Projekt starten und fragt sich unweigerlich, wie jemand außer einem selbst jemals die Konfiguration in Form eines PHP-Arrays verstehen soll. Bei yeebase media produzieren wir zum Beispiel die t3n-Heft-CD mit einem kleinen PHP-Script - basierend auf einer riesigen PHP-Array-Konfiguration, die viele Mitarbeiter gerne lieber gestern als morgen gegen eine schlanke Text-Datei ersetzt sehen würden.

Eine Alternative zur Definition von Konfigurations-Optionen in nativem PHP bietet das minimalistische yaml-Format. Dieses wird zum Beispiel vom PHP-Framework Symfony standardmäßig genutzt. Mit der PHP-Klasse sfYaml steht der YAML-Parser aus Symfony nun auch für eigene Entwicklungen zur Verfügung.

Vorher

Definition der Konfiguration mit PHP (config.php):

$config = array('testuser' => array('name' => 'gerd', 'pass' => 'bier'));

Die Datei config.php muss mit dem PHP-Befehl include oder require geladen werden:

include_once('config.php');

Nacher

Definition der Konfigurationsoptionen mit yaml (config.yml):

testuser:
  name: gerd
  pass: bier

Die yaml-Datei kann dann mit der Klasse Symfony-YAML auf einfache Weise eingelesen werden und steht dann ebenfalls der PHP-Anwendung als normales Array zur Verfügung:

include_once('sfYaml/sfYamlParser.php');
$yaml = new sfYamlParser();
$config = $yaml->parse(file_get_contents('/config.yml'));

Fazit

Mit der Verwendung des yaml-Formats muss man zwar mindestens zwei Zeilen mehr Code investieren, kann dafür aber auch unversierteren Nutzern die Änderung von config-Dateien ermöglichen. Aber Achtung: Bei der Definition von yaml-Dateien muss man genau auf Leertasten achten, da diese vom yaml-Parser interpretiert werden!

Beitrag mit anderen teilen:

  • Twitter
  • Facebook
  • FriendFeed
  • t3n Social News
  • del.icio.us
  • MisterWong.DE
  • Digg
  • Identi.ca
  • Technorati
  • RSS
  • E-mail this story to a friend!

Aktuelle News:

Du hast eine Ergänzung oder Frage zum Artikel? Teile sie jetzt mit!