2010-11-23 4 views
0

INIファイルを書き込んで保存するときに問題が発生しました。私はZend_Config_Iniを使ってこのプロシージャを処理します。Zend_ConfigでINIファイルを保存した後の二重引用符の問題

問題は、整数または数値の保存プロセスを使用するすべての行の値に常に「二重引用符」が付いていることです。ここで私は、コード

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 
             null, 
             array('skipExtends'  => true, 
              'allowModifications' => true)); 

     // Modify a value 
$config->production->resources->db->adapter = 'foobar'; 

     // Write the config file 
$writer = new Zend_Config_Writer_Ini(array('config' => $config, 
              'filename' => APPLICATION_PATH . '/configs/application.ini')); 
$writer->write(); 

のこれらの行を実行した後のapplication.iniラインが

resources.session.use_only_cookies = "1" //double quote appears T_T 
resources.session.remember_me_seconds = "86400" //double quote appears T_T 

なる例

元のapplication.iniファイル

resources.session.use_only_cookies = 1 
resources.session.remember_me_seconds = 86400 

です整数値は同じでなければなりません(二重引用符を使用しないでください)。

誰でもこの問題を解決するのに役立ちますか?

)(にparse_ini_fileを使用してPHPでiniファイルを読み込むときに、フィル・ブラウンノートとして予め

+0

これはなぜ問題ですか? iniファイルの値を引用符で囲むことをお勧めします。とにかく 'Zend_Config'に文字列として返されるすべての値が引用されます。 – Phil

+0

実際、整数の元の値が二重引用符で囲まれていないことがわかるので、Philさんにとっては問題です。しかし、コードを実行すると、整数値とブール値の場合でも二重引用符が表示されます。違います。それでも変わらないはずです。 –

答えて

1

はとにかく、私の解決策では

は、私は、Zendのコードのいくつかの行を削除する必要がありました。私が変更されたファイルには、メソッド_prepareValue(のためのIni.php \ Zendの\ Configを\ライター\ た)ライン150で

protected function _prepareValue($value) 
    { 
     /* 
     I comment it    

     if (is_integer($value) || is_float($value)) { 
      return $value; 
     } elseif (is_bool($value)) { 
      return ($value ? 'true' : 'false'); 
     } else { 
      return '"' . addslashes($value) . '"'; 
     }*/ 

     return $value; // my line 
    } 

以下のようにただのZendの元のコードをコメントし、ちょうど合格すると、 $ valueを返します。

したがって、このファイルを変更することで、文字列、ブール値、または偶数の場合に二重引用符を使用することはありません。これは私が望むものです。 :)

ありがとう皆さん。

3

にありがとうございました、あなたはいつでも戻って文字列を取得します。また、英数字以外の値の場合は、二重引用符で囲む必要があるため、Zend_Config_Writerはすべての値を囲みます。

+0

parse_ini_file()のドキュメントを読んだ後、私はこれに気付きました。あなたの指導のためにRob Allenに感謝します。 –

関連する問題