【PHP】設定ファイル書き出し

PHP でコンフィグレーションファイルを読むのに
parse_ini_file()があるが、書き込む関数が見当たらない。

webで検索しても見つからないので作ってみた。

function add_quote($quote_str,$val){
  if(is_string($val)){
    $val = "${quote_str}${val}${quote_str}";
  }
  return $val;
}

function parse_array($ini_array,$buf=""){

  if(is_array($ini_array)){
    foreach($ini_array as $key=>$val){
      if(is_array($val)){
        foreach($val as $key2=>$val2){
          $buf .= "${key}[${$key2}] = " . add_quote('"',$val2) ."\n";
        }
      }else{
        $buf .= "${key} = " . add_quote('"',$val) ."\n";
      }
    }
  }
  return $buf;
}

function write_ini_file($filename,$ini_array,$process_sections = false){

  if(is_array($ini_array)){
    $fp = fopen($filename,"w");
    foreach($ini_array as $key=>$val){
      $buf = "";
      if(is_array($val)){
        if($process_sections != false){
          $buf .= "[${key}]\n";
        }
        $buf .= parse_array($val);
      }else{
        $buf .= "${key} = " . add_quote('"',$val) ."\n";
      }
      fwrite($fp,$buf);
    }
    fclose($fp);
  }
}

これで一応、parse_ini_file()のサンプルが正常に展開格納できるが、Zend Frameworkにiniファイル書くヤツがあるというのが分かった。

しかし、Zend Framework の Zend_Config_Writer_Ini() と同じ結果だから、手軽に使うならこれでいいや。