Programmer's Reference Guide

動作原理

Zend_Config_Ini(日本語)

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 を設定します。たとえばこのようになります。

  1. $options['nestSeparator'] = ':';
  2. $config = new Zend_Config_Ini('/path/to/config.ini',
  3.                               'staging',
  4.                               $options);

例1 Zend_Config_Ini の使用法

この例は、Zend_Config_Ini を使用して INI ファイルから設定データを読み込むための基本的な方法を説明するものです。 この例では、運用環境の設定と開発環境の設定を両方管理しています。 開発環境用の設定データは運用環境用のものと非常に似ているので、 開発環境用のセクションは運用環境用のセクションを継承させています。 今回の場合なら、逆に運用環境用のセクションを開発環境用のものから継承させてもいいでしょう。 そうしたからといって特に状況が複雑になるわけではありません。 ここでは、次のような内容の設定データが /path/to/config.ini に存在するものとします。

  1. ; 運用環境の設定データ
  2. [production]
  3. webhost                  = www.example.com
  4. database.adapter         = pdo_mysql
  5. database.params.host     = db.example.com
  6. database.params.username = dbuser
  7. database.params.password = secret
  8. database.params.dbname   = dbname
  9.  
  10. ; 開発環境の設定データは、運用環境のデータを継承したうえで
  11. ; 必要に応じて値を上書きします
  12. [staging : production]
  13. database.params.host     = dev.example.com
  14. database.params.username = devuser
  15. database.params.password = devsecret

次に、開発者が開発環境用の設定データを INI ファイルから読み込むことを考えます。 これは簡単なことで、単に INI ファイルとセクションを指定するだけです。

  1. $config = new Zend_Config_Ini('/path/to/config.ini', 'staging');
  2.  
  3. echo $config->database->params->host;   // "dev.example.com" と出力します
  4. echo $config->database->params->dbname; // "dbname" と出力します

注意:

Zend_Config_Ini コンストラクタのパラメータ
パラメータ 説明
$filename 読み込む INI ファイル。
$section INI ファイル内で読み込む [section]。 このパラメータを NULL にすると、 すべてのセクションを読み込みます。 また、セクション名の配列を指定すると、複数のセクションを読み込みます。
$options (デフォルトは FALSE) オプションの配列。以下のキーをサポートしています。
  • allowModifications: TRUE を指定すると、 読み込んだ設定データをインメモリで後で変更できます。 デフォルトは FALSE です。

  • nestSeparator: ネストの区切り文字として使用する文字を設定します。 デフォルトは "." です。


動作原理

Comments

not sure if this is deliberate
settings.status.live = true
on retrieving the value is string(1) "1"
settings.status.live = false
on retrieving the value is string(0) ""
Bonjour,

Petit bug dans cette classe, je m'explique, j'ai développé un client SOAP j'utilise la classe Zend ini pour pouvoir modifier les différents paramêtres pour le SOAP, simplement si vous mettez des masque de bit (bitmask) en l'occurence ceux du SOAP : SOAP_SINGLE_ELEMENT_ARRAYS, SOAP_USE_XSI_ARRAY_TYPE et, SOAP_WAIT_ONE_WAY_CALLS qui sont les features du SOAP cela ne marche pas il interprete surment les faite que se soit une string... il faut le faire en dur de cette façon : setOption(array('features' => SOAP_SINGLE_ELEMENT_ARRAYS)) cette méthode marche.

a plus !
Раз уже пишут на неанглийском, то надо и русский попиарить! Всем привет!
Я люблю Зенд Фреймворк!
ПС. Это не пиар.
а че, модером не проверяется чоли....

то печалька....
Модер не русский, думает что мы по делу наверное)
Hi,

wie genau gebe ich denn den Pfad zu der Ini-Datei an? Wenn ich z. B. im View in der Datei "application/views/scripts/index/index.phtml" den Eintrag "meta.description" ausgeben möchte?

+ Add A Comment

Please do not report issues via comments; use the ZF Issue Tracker.

If you have a JIRA/Crowd account, we suggest you login first before commenting.

  • BBCode is allowed in the comment markup

  • Select a Version

    Languages Available

    Components

    Search the Manual