Aller au contenu

MConfig

Un premier aperçu

La classe MConfig permet de charger et de travailler avec des fichiers de configuration d'un type à mi-chemin entre les fichiers de configuration classiques (type Properties, cle=valeur) et les fichiers de type xml.
Ex :

# un commentaire

cle1=val1
<bloc1>
  clebloc1 = valbloc1
  <bloc11> clebloc11 = valbloc11 </bloc11>
</bloc1>
<bloc2> # un autre commentaire
  clebloc2 = valbloc2
  <bloc21> clebloc211 = valbloc211; clebloc212 = valbloc212 </bloc21>
  <bloc22>
    <bloc221> clebloc221 = valbloc221 </bloc221>
    clebloc22
  </bloc22>
</bloc2>
cle2 = val2
  • Si une cle n'a pas de valeur elle est considérée comme étant de type booléen et est positionnée à true.
  • Le point virgule n'est pas obligatoire apres une paire clé-valeur s'il n'y a pas d'autre paire clé-valeur sur la même ligne.
  • Les lignes vides et les lignes commentées ne sont pas pris en compte.
  • On peut mettre des commentaires en fin de ligne.
  • Les espaces ne sont pas pris en compte.
  • Une cle ne peut pas contenir le signe "=", mais une valeur oui.
  • Une valeur peut être encadrée par des double-quotes (cle = "valeur")
  • Si une valeur doit contenir un des caractères parmi " ; # < > ils doivent être échappés \" \; \# \< \>

Exemple d'utilisation :

try{
    $myconf = new MConfig("path/to/myconf.conf");
}
catch(MConfigException $e){
    echo $e->getMessage();
}

echo $myconf->toString();
$value = $myconf->getParameter("cle1");
$value2 = $myconf->getConfig("bloc2")->getParameter("clebloc2");

Utilisation

Un objet de type MConfig est un objet qui peut contenir :

  • d'autres objets de type MConfig (correspondants aux "blocs du fichier de configuration)
  • des paramètres de type clé/valeur

Sur un objet de type MConfig, on utilisera donc principalement les deux méthodes suivantes :

  • getConfig(String $key) : qui renvoie un objet de type MConfig correspondant au bloc ayant pour label $key ou null si le bloc n'existe pas
  • getParameter(String $key) : qui renvoie la valeur du paramètre ayant pour clé $key ou null si le paramètre n'existe pas

D'autres méthodes existent qui peuvent être utiles :

  • getParametersNames() : renvoie un tableau contenant toutes les clés de paramètres contenues dans un objet MConfig (un bloc ou le fichier global)
  • getConfigsNames() : renvoie un tableau contenant toutes les noms (labels) de blocs (sous-configs) contenus dans un objet MConfig (un bloc ou le fichier global)
  • getSubEntriesNames() : renvoie un tableau contenant tous les labels de blocs et le clés de paramètres contenus dans l'objet

On peut aussi modifier dynamiquement un objet MConfig même si ce n'est pas le but principal de l'outil. On utilisera alors la méthode setSubEntry(String $key, mixed $entry) :
$entry sera alors soit une valeur quelconque soit un objet de type MConfig À utiliser avec précaution !!