PHP : Stocker sa configuration dans un fichier XML avec WDDX
Par Méthylbro le lundi 13 juillet 2009, 08:00 - Développement - Lien permanent
Il y a quelques semaines, j'ai parlé longuement de la gestion des variables de configuration au sein d'application PHP. J'ai même essayé de donner quelques pistes de réflexion en proposant un petit ensemble de classe pour stocker ces valeurs dans des fichiers .ini, dans des bases de données, ou encore dans les variables de session.
Pourtant je trouvais dommage de ne pas montrer au moins un exemple utilisant XML pour stocker ces valeurs. Je vais donc corriger ca en vous proposant cet exemple aujourd'hui. Nous allons compléter nos exemples avec une petite classe qui nous permettra de stocker des variables de configuration au sein d'un fichier XML.
Le choix du format XML
Pour me simplifier la vie, lorsque je doit représenter des données en XML via un script PHP, j’aime bien utiliser WDDX. En effet, il existe une extension qui permet de sérialiser et desérialiser des données au format WDDX sans soucis.
Nous allons donc utiliser les fonctions wddx_serialize_value() et wddx_deserialize() pour transformer notre tableau de valeurs en un paquet au format WDDX.
La classe WDDXFile_ConfigurationHandler
Nous allons donc créer une nouvelle classe WDDXFile_ConfigurationHandler héritant de notre classe abstraite ConfigurationHandler et implémentant l’interface iConfigurationHandler. Il nous suffira donc de rédiger uniquement les méthodes load() et save() de notre interface.
Voici à quoi ressemblera la structure de notre classe :
class WDDXFile_ConfigurationHandler
extends ConfigurationHandler
implements iConfigurationHandler {
private $file;
public function __construct($file, $auto=false) {}
public function load() {}
public function save() {}
}
La méthode load()
Pour lire le paquet WDDX contenu dans le fichier, nous allons utiliser conjointement les fonctions file_get_contents() et wddx_deserialize().
La première va récupérer le contenu du fichier et la seconde va transformer la chaîne de caractères contenant le paquet WDDX.
public function load() {
$this->setData(wddx_deserialize(file_get_contents($this->file)));
return $this;
}
la méthode save()
Pour écrire notre nouveau document XML au sein de notre fichier, nous allons à l’inverse de la fonction load() utiliser les fonctions file_put_contents() et wddx_serialize() pour créer le paquet WDDX et l’écrire dans le fichier.
public function save() {
file_put_contents($this->file, wddx_serialize_value($this->data));
return $this;
}
Commentaires