5.2. 動作原理
前のページ | 第5章 Zend_Config | 次のページ

## 5.2. 動作原理

`Zend_Config` のコンストラクタを通じて、 設定データに連想配列形式でアクセスできるようになります。 多次元の連想配列となる可能性もあり、 これによって汎用的なデータから何かに固有のデータまで扱えるようになります。 具象アダプタクラスの機能は、 どこかに保存されているデータを読み込んでこの連想配列形式を作成し、 し、`Zend_Config` のコンストラクタに渡すことです。 スクリプト内で直接配列を作成し、それを `Zend_Config` のコンストラクタに渡すことも可能です。 この場合はアダプタクラスは使用しません。 場合によってはこのような方式のほうが適切なこともあるでしょう。

`Zend_Config` は内部で `Countable` インターフェイスおよび `Iterator` インターフェイスを実装しており、 これを使用して設定データに容易にアクセスできるようになっています。 つまり、`Zend_Config` オブジェクトに対して `count()` 関数や `foreach` などを使用できるということです。

デフォルトでは、`Zend_Config` で利用できる設定データは読み込み専用です。代入 (`$config->database->host = 'example.com'` など) を行おうとすると例外がスローされます。しかし、 コンストラクタでこの振る舞いを変更し、データの変更を許可することも可能です。

| 注意
メモリ上で変更したデータを何らかのメディアに保存しようとする際に、 ちょっと戸惑うかもしれません。 作成したり変更したりした設定データをメディアに保存する機能は、今のとこる Zend Framework の対象範囲外です。 設定データを作成・編集してメディアに保存するには、 サードパーティからオープンソースのソリューションが提供されています。

`Zend_Config` クラスを継承したアダプタクラスが、 それぞれの内容に応じて機能を拡張します。

`Zend_Config` ファミリーのクラスを使用すると、 設定データをセクション単位でまとめることができます。 `Zend_Config` オブジェクトの特定のセクションだけを読み込んだり、 複数のセクションを指定して読み込んだり、あるいは (何も指定しなければ) 全セクションを読み込んだりといったことが可能です。

`Zend_Config` は単一継承モデルをサポートしており、 設定データの特定のセクションを別のセクションに継承させることができます。 この機能が提供されている理由は、 さまざまな目的のために設定データを二重管理する必要をなくすためです。 継承したセクションでは、親セクションから継承した値を上書きすることができます。 PHP のクラス継承と同様に、あるセクションが親セクションを継承し、 そのセクションがまた上位セクションを継承し、といったことが可能です。 しかし多重継承 (例えば、セクション C がセクション A およびセクション B のふたつを直接継承するなど) はサポートされていません。

前のページ | 上に戻る | 次のページ
第5章 Zend_Config | ホーム | 5.3. Zend_Config_Ini