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 .

Un exemple qui créera un nouveau Config_Container

<?php
// initialise un objet Config_Container

require_once('Config.php');
$conf =& new Config_Container('section''conf');
$conf_DB =& $conf->createSection('DB');
$conf_DB->createDirective('type''mysql');
$conf_DB->createDirective('host''localhost');
$conf_DB->createDirective('user''root');
$conf_DB->createDirective('pass''root');

// set this container as our root container child in Config

$config = new Config();
$config->setRoot($conf);

// Ecrit le conteneur dans un tableau  php
$config->writeConfig('/tmp/config_test.php''phparray',
                                      array(
'name' => 'test');
// affiche à l'écran le contenu de notre section conf
echo $conf->toString('phparray', array('name' => 'test'));
?>

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é.

Lire une configuration dans un fichier XML

<?php
require_once 'Config.php';

$conf = new Config;
$root =& $conf->parseConfig('config.xml''XML');

if (
PEAR::isError($root)) {
    die(
'Erreur à la tentative de lecture de la configuration: ' 
       
$root->getMessage());
}

$settings $racine->toArray();

printf('Paramètres utilisateur: <a href="%s">%s %s</a>',
       
$settings['root']['conf']['www'],
       
$settings['root']['conf']['prenom'],
       
$settings['root']['conf']['nom']
       );
?>

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.

Config (Previous) Comment manipuler le contenu d'une configuration (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.