Zend_Configを使ってみた

2008/05/14 | Zend Framework

Zend_Configは、設定ファイルを読み込むためのライブラリだ。通常PHPで設定ファイルを用意する際、自分はこんな具合に書いている。

define(‘ADMIN_MAIL’,’admin@example.com’);
define(‘ADMIN_PASSWORD’,’hogehoge’);

define文の列挙だ。これはこれでいいのだが、設定ファイルを素人な方に編集させるのには気が引ける。そんな場合に便利なのがZend_Configだ。Zend_Configにはiniファイル形式の設定ファイルを取り扱うZend_Config_IniとXML形式の設定ファイルを取り扱うZend_Config_Xmlとがある。当然、直感的にわかりやすいZend_Config_Iniを使う。

設定ファイルにはWindowsのiniファイル等でおなじみの書式を使って設定を記述する。

[admin]
mail=admin@example.com
password=hogehoge

[datasource]
db.host=localhost
db.name=hoge
db.user=fuga

上記の設定が書かれたファイルをconfig.iniというファイル名で保存するとZend_Config_Iniを使って以下のように呼び出す。

$configObj = new Zend_Config_Ini(‘config.ini’,NULL);

これだけで、$configObj->admin->mailなんて具合にオブジェクトのプロパティとしてアクセスできるようになる。db.hostみたいにドットで区切られている場合は、$configObj->datasource->db->hostみたいな感じになる。

自分の場合は、オブジェクトではなく、関数を一つかませて、オブジェクト形式から配列形式に変換して使用している。

function _readConfig($configObj)
{
  $configs=array();
  foreach($configObj as $configKey => $configValue){
    if(is_object($configValue) || is_array($configValue)){
      $configs[$configKey]=_readConfig($configValue);
    }else{
      $configs[$configKey]=$configValue;
    }
  }
  return $configs;
}

さらにZend_Registryとセットで使うと「初期設定を読み込んで、共通変数にセット」なんてことがすぐにできる。これも便利だ。

2件のコメント

  1. heavenshell :

    こんにちは。
    toArray() を使用すれば一撃で配列に変換してくれますよ。
    $configObj = new Zend_Config_Ini(‘config.ini’,NULL);
    $configArray = $confiObj->toArray();

  2. かおるん :

    コメントありがとうございます。
    そういう素敵なメソッドがあるんですね。試してみます。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net