Manuel Pear

Introduction

Introduction --  Ce que Config peut faire

Introduction

Config aide à manipuler votre configuration qu'elle soie stockée dans des fichiers XML, des tableaux PHP ou tout autre genre de source de données. Il comporte les fonctionalités suivantes :

  • Analyser les différents formats de configuration.

  • Manipuler les sections, directives, commentaires, blancs de la manière que vous voulez.

  • Réécrire de nouveau les données dans votre format préféré.

L'objet de Config agit en tant que conteneur pour d'autres objets de Config_Container. Il ne fait pas beaucoup mais rend la tenue des opérations de E/S plus faciles. Il contient l'objet racine de Config_Container qui contient alternativement un objet enfant de Config_Container. Les objets Config_Container stockent des références à leur parent et ont un tableau d'enfants. Cette structure permet alors d'accéder à différent les conteneurs et leur contenu.

Un objet de Config_Container peut être de différents types :

  • Section: une section contient d'autres objets Config_Container.

  • Directive: une directive ne contient aucun autre objet mais a un contenu et un nom. Voyez-les comme des paires de clef-valeur.

  • Commentaire: comme les directives, les commentaires ont un contenu mais elles n'ont pas de nom. Elles sont rendues d'une manière spéciale selon le type de configuration que vous choisissez.

  • Blanc: elles n'ont ni contenu ni nom mais sont utilisées pour indiquer les interlignes si votre _renderer_ les emploie.

En utilisant le paquet Config, la majeure partie du travail est effectuée avec les objets Config_Container .

Exemple 37-1. Un exemple qui créera un nouveau Config_Container

  1. <?php
  2. // initialise un objet Config_Container
  3.  
  4. require_once('Config.php');  
  5. $conf =& new Config_Container('section', 'conf');  
  6. $conf_DB =& $conf->createSection('DB');  
  7. $conf_DB->createDirective('type', 'mysql');  
  8. $conf_DB->createDirective('host', 'localhost');  
  9. $conf_DB->createDirective('user', 'root');  
  10. $conf_DB->createDirective('pass', 'root');  
  11.  
  12. // set this container as our root container child in Config
  13.  
  14. $config = new Config();  
  15. $config->setRoot($conf);  
  16.  
  17. // Ecrit le conteneur dans un tableau php
  18. $config->writeConfig('/tmp/config_test.php', 'phparray', 
  19.                            array('name' => 'test');  
  20. // affiche à l'écran le contenu de notre section conf
  21. echo $conf->toString('phparray', array('name' => 'test')  
  22. ?> 

L'exemple ci-dessus illustre comment Config et le Config_Container peuvent agir l'un sur l'autre. Il y a d'autres manières. Vous pourriez avoir par exemple d'abord créer l'objet config et ensuite utiliser $config->getRoot() pour ajouter des sections et des directives à l'objet référence retourné.

Exemple 37-2. Lire une configuration dans un fichier XML

  1. <?php
  2. require_once 'Config.php';  
  3.  
  4. $conf = new Config;  
  5. $root =& $conf->parseConfig('config.xml', 'XML');  
  6.  
  7. if (PEAR::isError($root)) { 
  8.    die('Erreur à la tentative de lecture de la configuration: ' 
  9.    . $root->getMessage());  
  10. }  
  11.  
  12. $settings = $racine->toArray();  
  13.  
  14. printf('Paramètres utilisateur: <a href=".php">%s %s</a>', 
  15.    $settings['root']['conf']['www'], 
  16.    $settings['root']['conf']['prenom'], 
  17.    $settings['root']['conf']['nom'] 
  18.    
  19. ?> 

Dans cet exemple le fichier XML config.xml ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?>

<conf>
  <prenom>John</prenom>
  <nom>Doe</nom>

  <www>http://example.com/</www>
</conf>

Pour plus d'informations, vous pouvez lire la doc de l'API, les exemples et les tests du package, et un bon tutorial sur DevShed.


Remonter Remonter
Jamma Play - L'éditeur javascript - CSS - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique