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 のふたつを直接継承するなど) はサポートされていません。