Traduction du billet
'patConfiguration 2.0.0b1 released' de php-tools:
Stéphane a publié la première beta publique de son lecteur de configurations
patConfiguration. À partir de cette version, la classe est basée sur des drivers avec une architecture unifiée pour lire les configurations à partir de fichiers XML, INI et WDDX avec la même interface.
Le driver XML est le plus puissant, puisqu'il permet de définier commetn les balises doivent être traitées. Il est ainsi par ex. possible de définir une balise <foo one="1" bar="totmato"/> pour qu'elle soit automatiquement convertie en tableau avec les attributs comme clés et valeurs. Bien sûr on peut aussi choisir pour chaque attribut quel type de variable y est stocké pour que les valeurs soient automatiquement convertis en valeurs booléennes, nombres, chaînesde caractère et même des objets.
Pour cela, patConfiguration propose une balise spéciale très simple:
<!-- définir un espace de nom -->
<define ns="boutique">
<!-- définir une balise dans un espace de nom -->
<define tag="articles" type="array"/>
<!-- définir une balise sans nom (tableau indexé) -->
<define tag="article" name="_none" type="array">
<!-- définir trois attributs pour cette balise -->
<define attribute="vendeur" type="string"/>
<define attribute="titre" type="string"/>
<define attribute="prix" type="float" default="99.99"/>
</define>
</define>
Maintenant que les balises sont définies et que patConfiguration sait comment les integréter, on peut les utliser dans la configuration XML:
<boutique:articles>
<boutique:article titre="Hache médiévale" vendeur="Argh"/>
<boutique:article titre="Oeuf de dragon" vendeur="Merlin" prix="500"/>
</boutique:articles>
Lire cette configuration à partir d'un fichier est très simple:
<?php
$conf = new patConfiguration(
array(
'configDir' => './config'
)
);
// parse config file
$conf->loadConfig('example_define_basic.xml');
$config = $conf->getConfigValue('articles');
?>
Si vous êtes inquiet que le temps que de parser des fichiers XML à chaque requête ralentit votre application, vous pouvez activer le système de cache qui rend le chargement encore plus rapide que de stocker la configuration dans un fichier PHP. Si vous voulez utiliser les définitions des balises dans plusieurs fichiers, vous pouvez utiliser des entités externes ou des balises xInclude - patConfiguration gère les deux, même sous PHP4.
Après chargement avec patConfiguration, voilà le tableau résultant de notre exemple:
Array
(
[0] => Array
(
[vendeur] => Argh
[titre] => Hache Médiévale
[prix] => 99.99
)
[1] => Array
(
[vendeur] => Merlin
[titre] => Oeuf de dragon
[prix] => 500
)
)
patConfiguration permet en outre d'accéder à la configuration complète, ou juste des parties en utilisant une mixture de la syntaxe d'accès aux tableaux dans PHP et de syntaxe de chemins à la JavaScript (boutique.articles[0], par ex.) Pour voir la liste complète des possibilités qu'offre patConfiguration, il y a les
exemples en ligne ou vous pouvez télécharger le
package entier par notre site.
Si vous utilisez déjà PEAT 1.4.0, vous pouvez aussi l'installer par notre
serveur de canaux:
$ pear channel-discover pear.php-tools.net
$ pear install --alldeps pat/patConfiguration
En cas de bogue, utilisez notre
patBugzilla.