Config を使用すると、XML ファイルや PHP の配列、 あるいはその他のデータソースに保存された設定項目を扱いやすくなります。 これらの機能がサポートされています。
Config オブジェクトは、その他の Config_Container オブジェクトのコンテナとして働きます。 たいしたことをするわけではありませんが、入出力操作を簡単に行えるようになります。 ルート Config_Container オブジェクトがあり、 その配下に子 Config_Container オブジェクトが含まれるという形式になります。 Config_Container オブジェクトは、 自分の親への参照と、自分の子の配列を保持します。 この構造により、さまざまなコンテナの内容に容易にアクセスできるようになります。
Config_Container オブジェクトには、 さまざまな型があります。
Config パッケージを使用する際は、 大半の作業は Config_Container オブジェクトに対して行います。
新しい Config_Container の作成
<?php
// 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');
// このコンテナを、Config のルートとして指定します
$config = new Config();
$config->setRoot($conf);
// コンテナを php の配列として書き出します
$config->writeConfig('/tmp/config_test.php', 'phparray',
array('name' => 'test'));
// 設定内容を画面に表示します
echo $conf->toString('phparray', array('name' => 'test'));
?>
上の例では、Config と Config_Container を組み合わせる方法を説明しています。 これ以外にも別の方法があります。 例えば、まず Config オブジェクトを作成して $config->getRoot() を使用し、返されたオブジェクトへの参照にセクションやディレクティブを追加するという方法です。
XML ファイルからの設定の読み込み
<?php
require_once 'Config.php';
$conf = new Config;
$root =& $conf->parseConfig('config.xml', 'XML');
if (PEAR::isError($root)) {
die('設定を読み込む際のエラー: ' . $root->getMessage());
}
$settings = $root->toArray();
printf('User settings: <a href="%s">%s %s</a>',
$settings['root']['conf']['www'],
$settings['root']['conf']['firstname'],
$settings['root']['conf']['lastname']
);
?>
この例で使用する XML ファイル config.xml
は、このようになります。
<?xml version="1.0" encoding="UTF-8"?> <conf> <firstname>John</firstname> <lastname>Doe</lastname> <www>http://example.com/</www> </conf>
さらなる情報は、 API ドキュメント や パッケージのサンプル、そして パッケージのテスト を参照ください。また、DevShed では、Config パッケージのすばらしい チュートリアル が公開されています。