Zend_Config_Ini
は、おなじみの INI
形式のファイルに保存された設定データを、Zend_Config
を通じてオブジェクトのプロパティとして扱えるようにします。
この INI 形式は、階層化された設定データを扱うこと、
そしてセクション間の継承関係を扱うことに特化されています。
設定データの階層構造は、キーの名前をドットあるいはピリオド
(.) で区切ることによって表現します。
他のセクションを拡張するなどの継承関係は、
セクション名に続けてコロン (:) を、
そしてその後に継承元のセクション名を指定することで表します。
INI ファイルのパース
Zend_Config_Ini
は、PHP の
parse_ini_file()
関数を使用しています。このドキュメントでは、Zend_Config_Ini
固有の挙動に注意しましょう。例えば、特殊な値として
"TRUE
" や "FALSE
"、
"yes"、"no" そして "NULL
"
を処理できることなどです。
キーの区切り文字
デフォルトでは、キーの区切り文字はピリオド (.) です。
しかし、これは変更することもできます。変更するには、
Zend_Config_Ini
オブジェクトの作成時に
$options
のキー
nestSeparator を設定します。たとえばこのようになります。
$options['nestSeparator'] = ':'; $config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $options);
例120 Zend_Config_Ini の使用法
この例は、Zend_Config_Ini
を使用して
INI ファイルから設定データを読み込むための基本的な方法を説明するものです。
この例では、運用環境の設定と開発環境の設定を両方管理しています。
開発環境用の設定データは運用環境用のものと非常に似ているので、
開発環境用のセクションは運用環境用のセクションを継承させています。
今回の場合なら、逆に運用環境用のセクションを開発環境用のものから継承させてもいいでしょう。
そうしたからといって特に状況が複雑になるわけではありません。
ここでは、次のような内容の設定データが
/path/to/config.ini
に存在するものとします。
; 運用環境の設定データ [production] webhost = www.example.com database.adapter = pdo_mysql database.params.host = db.example.com database.params.username = dbuser database.params.password = secret database.params.dbname = dbname ; 開発環境の設定データは、運用環境のデータを継承したうえで ; 必要に応じて値を上書きします [staging : production] database.params.host = dev.example.com database.params.username = devuser database.params.password = devsecret
次に、開発者が開発環境用の設定データを INI ファイルから読み込むことを考えます。 これは簡単なことで、単に INI ファイルとセクションを指定するだけです。
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging'); echo $config->database->params->host; // "dev.example.com" と出力します echo $config->database->params->dbname; // "dbname" と出力します
注記
表41 Zend_Config_Ini コンストラクタのパラメータ
パラメータ | 説明 |
---|---|
$filename |
読み込む INI ファイル。 |
$section |
INI ファイル内で読み込む [section]。
このパラメータを NULL にすると、
すべてのセクションを読み込みます。
また、セクション名の配列を指定すると、複数のセクションを読み込みます。
|
$options (デフォルトは FALSE ) |
オプションの配列。以下のキーをサポートしています。
|