PHP : Stocker sa configuration dans un fichier XML avec WDDX

Publié le 13 juillet 2009 par Methylbro

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;
}