Fichiers de configuration
Publié le December 7th, 2007 par Jérémie Ducastel
Lorsqu’on développe une application ou un composant de manière à pouvoir le réutiliser, il est nécessaire de pouvoir définir une configuration d’environnement de manière séparée du code. Cela peut être fait par inclusion d’un fichier se contentant de déclarer un suite de variables ou de constantes dans le language de l’application (c’est le cas des fichiers urls.py et settings.py de Django). Mais il est généralement préférable d’utiliser un format qui puisse être lu et modifié par un non-programmeur.
Le format INI
A la fois très simple et très largement utilisé, le format INI permet de définir des paires clefs/valeur, éventuellement organisées par sections. Il est suffisamment intuitif pour être modifié par quelqu’un qui n’en connait pas la syntaxe.
C’est le format de configuration de PHP, et une fonction native permet de lire un tel fichier et de récupérer directement les données stockées dans un tableau associatif, à deux dimensions en activant le support des sections.
Python dispose du module ConfigParser, qui supporte une syntaxe un peu plus évoluée.
Le format XML
Le patriarche des formats de structuration et d’échange de données. Plus qu’un format de fichier, XML est une grammaire dont dérivent des zillions de syntaxes, qu’elles soient standardisées ou propriétaires. Très largement utilisé pour la configuration d’application, ce n’est pourtant pas forcément des plus simples à éditer. De plus, il est généralement assez lourd à manipuler en programmation, ce qui n’est pas terrible en termes de performance. Surtout dans le cadre d’une application web, si celle-ci doit lire le fichier à chaque requete…
Le format YAML
Si vous avez besoin de données de configuration plus élaborées, notamment s’il vous faut plus de deux niveaux de données ou des textes sur plusieurs lignes, il y a le format YAML. Celui-ci se veut une alternative à XML, qui soit à la fois plus concise (donc plus légère à stocker) et plus lisible pour un être humain. Ce qui en fait un candidat idéal pour des fichiers de configuration. Comme en Python, l’indentation y joue un rôle clef.
Contrairement à INI, il n’est pas supporté nativement par PHP, mais la librairie Spyc permet de convertir ces fichiers en tableaux de données et inversement.
Python dispose de la librairie PyYaml.