Voici la suite du billet de lundi sur la gestion des variables de configuration au sein d’une application avec PHP.
Aujourd’hui nous allons rentrer dans le vif du sujet avec un premier exemple simple mais utilisant tout de même la surcharge ainsi que la SPL.
Cependant je garde pour plus tard toute la partie concernant l'enregistrement et le stockage de ces variables.
Dans un premier temps, nous allons voir comment manipuler un ensemble de variables de configuration au sein de votre application. Sans ce soucier pour le moment des méthodes qui seront utilisées pour enregistrés ou lire les données enregistrés (dans un fichier ou une base de données par exemple).
Parton donc du principe que nous souhaiterons pouvoir manipuler les données de configuration de la manière suivante :
$maConfiguration = new Configuration();
$maConfiguration->maVariable1 = 'ma valeur';
$maConfiguration->maVariable2 = 'mon autre valeur';
foreach ($maConfiguration as $variable => $valeur) {
echo $variable.' = '.$valeur.PHP_EOL;
}
/*
* Affichera :
* maVariable1 = ma valeur
* maVariable2 = mon autre valeur
*/
echo $maConfiguration['maVariable1'];
/*
* Affichera :
* ma valeur
*/
Pour se faire, nous allons devoir commencer par créer la classe Configuration.
Afin de pouvoir offrir à notre classe les comportements que nous venons de voir, nous allons utiliser des concepts courant en Programmation Orienté Objet : la surcharge et l'itérateur (enfin ici il ne s'agit pas d'un itérateur à proprement parler).
La surcharge, et ici la surcharge de propriétés, va nous permettre de redéfinir le comportement par défaut de php lorsqu'on fait appel en lecture et/ou écriture sur une propriété de notre objet. Je vous laisse lire le chapitre consacré à ce concept dans la documentation PHP : Les classes et les objets (PHP 5) : Surcharge
Ensuite, nous utiliserons les facilités apportées par la SPL comme par exemple l'interface IteratorAggregate qui nous permettra de manipuler notre objet comme un tableau dans les boucles foreach. Ou encore l'interface ArrayAccess qui nous permettra d'accéder au contenu de notre objet comme un tableau. Si vous n'avez encore jamais entendu parler de la Standard PHP Library, je vous laisse la découvrir : SPL Stantard PHP Library
La classe Configuration
Voici donc, dans sa forme la plus basique à quoi ressemble notre classe Configuration dans sa forme primaire.
class Configuration implements IteratorAggregate, Countable, ArrayAccess {
private $data=Array();
public function __get($name) {}
public function __set($name, $value) {}
public function __isset($name) {}
public function __unset($name) {}
public function count() {}
public function getIterator() {}
public function offsetExists($offset) {}
public function offsetGet($offset) {}
public function offsetSet($offset) {}
public function offsetUnset($offset) {}
}
Vous trouverez l'intégralité de la classe en exemple dans le fichier en annexe à ce billet.
Comme je l'ai expliqué, pour le moment nous ne nous sommes pas préoccupés de la façon dont les données seront enregistrées et stockées. Nous verrons ca dans les prochains billets.