2012-04-23 27 views
1

でフォーマット:は、コメントを追加したり、私がZend_Config_Writerにで遊んで、と私はそれは私が、私は以来、不穏ビットのフォーマットの欠如を見つけるやりたいことができますがしてきたZend_Config_Writerに

[production : general] 
; 
; Production site configuration data. 
; 

locale           = sv_SE 
... 

になり
[production : general] 
locale           = sv_SE 
... 

"新しい"設定はZend_Configオブジェクトの保存された値に基づいて書かれていて、このオブジェクトにはコメントやまばらな行は含まれていませんが、これは新しい設定を私の共同 - 労働者。

これは何とか解決できますか?私が思いついたベストは、 "カスケード"継承の異なるセクションを使用していますが、それは馬鹿げた考えのようです。

答えて

0

に役立ちます願っています。

  1. 設定を複数のファイルに分割します。私の場合は、
  2. すべて(私の場合は2)Zend_Config_Iniをがseparetlyオブジェクトが、1つ
  3. にallowModificationを設定して作成し、いくつかのバージョン固有のデータを保持しているほぼすべての私の設定と小1 version.iniを保持する1大型のapplication.iniを持っています
  4. Zend_Config_Ini-> Merge()機能を使用してすべての設定をマージし、それを読み取り専用に設定する
  5. 設定の一部を更新するには、その特定のiniファイルから新しいZend_Config_iniオブジェクトを作成し、変更を許可して範囲をスキップします。
  6. Zend_Config_Writer_iniで設定を更新し、変更を書き込む

例コード:

/* Load the config */  
//Get the application-config and set 'allowModifications' => true 
$config = new Zend_Config_Ini('../application/configs/application.ini',$state, array('allowModifications' => true)); 

//Get the second config-file 
$configVersion = new Zend_Config_Ini('../application/configs/version.ini'); 

//Merge both config-files and then set it to read-only 
$config->merge($configVersion); 
$config->setReadOnly(); 

/* Update a part of the config */ 
$configVersion = new Zend_Config_Ini(
     APPLICATION_PATH.'/configs/version.ini', 
     null, 
     array('skipExtends' => true, 'allowModifications' => true) 
    ); 

//Change some data here 
$configVersion->newData = "Some data"; 

//Write the updated ini 
$writer = new Zend_Config_Writer_Ini(
     array('config' => $configVersion, 'filename' => 'Path_To_Config_files/version.ini') 
    ); 
    try 
    { 
     $writer->write(); 
    } 
    catch (Exception $e) { 
     //Error handling 
    } 
0

Zend_Config_Writerは、Zend_Configには格納されていないので、オブジェクト。レンダリングしたいiniファイルの構造によっては、少なくとも冗長性をクリアするために "カスケード"を使用することができます(これは標準のapplication.ini設定ファイルでさえ...) 。

もちろん、別の解決方法では、iniファイルを書き込むために何か他の方法を使用しているかもしれませんが、それは過度のものかもしれません。

いくつかは、私は次のように私の問題を解決し、正常にテストした実験の後、

+0

はい、それが標準で使用され、私は自分のアプリケーションでそれを使用しますが、私は一般的なセクションを持っている必要がありますセクションとの私のコメントを置き換えるためにされ、その後、Zendのコンフィグセッション継承php configセクション、アプリケーションが接続するさまざまなデータベースとサービスのユーザ名/パスワードを持つさまざまなセクションがあります。私はそれらのすべてがそれらの "上"のものを継承する必要がある18のセクションまたはそうで終わるでしょう。今のところ私は2つの設定ファイルを使用して解決しましたので、私のコメントのほとんどをメインファイルに保存できます。 – Lobo

関連する問題