【ZendFramework】Zend_Configは便利。
Apacheのアクセスログが置かれているディレクトリの絶対パスや、ルートディレクトリ、webapp等の絶対パスは
- 各クラス、モジュールで共通に使う
- ハードウェアの環境によって変化する可能性がある
…ものなので、一箇所にまとめてカプセル化して管理しておくと便利です。
これを可能にするのが
「Zend_Config」
です(・∀・)
設定ファイルとして指定可能なのは
- Iniファイル
- XMLファイル
の二種類なのですが、Iniファイルのほうが処理が速いそうです(可読性も良いし…)。
Iniファイルの例としては、
[global]
id = Choo
domain_name = Choo.com
root_path = /home/Choo/release/html/
webapp_path = /home/Choo/release/webapp/
[db]
db_postgres = Pdo_Pgsql
db_host = 127.0.0.1
db_user = Choo
db_pass = ChooChoo
db_name = Choo
となっています。
$config = new Zend_Config_Ini('/path/to/config.ini', 'global');
とすると、「global」セクションのみを読みに行きますが、
$config = new Zend_Config_Ini('/path/to/config.ini', null);
とすると、全てのセクションを読みに行きます。
Iniファイルの情報を引っ張り出したい(例えば「webapp_path」が欲しい)時には、
$path_to_webapp = $config->global->webapp_path;
とすることで、「$path_to_webapp」に「webapp_path」が格納されます。
ModelでDBアクセスの処理を書くようにしているのですが、
親Modelを作っておいてそこにDBアクセス情報を記述しておき、
Modelを新規で作りたい時には、その親Modelを継承するように
しておくことで、DBへのアクセスが楽になります。
※2009-05-08追記
設定項目取得に関して補足です。
1セクション中の全ての項目を取得したい場合は、セクション名までを指定することで
そのセクションの持つ全ての項目が配列で渡されます。
上記の「db」を例に取ると…
$arrayDbInfo = $this->_config->db->toArray();
とすれば、$arrayDbInfoの中に「db_postgres」「db_host」などの情報が
$arrayDbInfo["db_postgres"] = "Pdo_Pgsql";
$arrayDbInfo["db_host"] = "127.0.0.1";
のように格納されます。