15

PHP でフレームワークを作成しており、いくつかの構成ファイルが必要です。これらのファイルの一部には、やむを得ず多数のエントリが含まれます。

これらの構成ファイルに最適な形式は何ですか?

これが私の最高の定量化です:

  1. PHP で簡単に解析できます。解析コードを書く必要がなければいいのですが、これは問題ではありません。
  2. 大量のエントリがある場合でも、人間が簡単に読み取ることができます
  3. 広く使用されている標準であり、カスタム形式はありません
  4. 簡潔さが評価される

私は XML を使い始めましたが、明らかな理由ですぐにあきらめました。JSON と YAML について考えましたが、他に何があるか知りたいと思っていました。

4

5 に答える 5

19

INIファイル形式はどうですか?これは事実上の構成ファイル標準であり、PHP にはその形式用の組み込みパーサーがあります。

parse_ini_file

于 2009-01-24T23:52:44.763 に答える
14

YAML は良いオプションです: http://www.yaml.org/

それも非常にシンプルで強力です

Ruby プロジェクトでは、設定によく使用されます。

于 2009-01-24T23:51:42.410 に答える
12

構成にPHPファイルを使用しないのはなぜですか?

メリットは明らかです。

  • 可能性のあるエラーは自動的にキャッチされます
  • カスタムパーサーを使用/作成する必要はありません
  • PHPプログラマーに広く理解されています
  • たとえば、開発用のカスタム構成を使用したり、本番用に他の構成を使用したりするなど、いくつかのカスタム ロジックを使用できます。

Django や rails などの他のフレームワークは、スクリプトである構成ファイルを使用します。

于 2009-01-24T23:48:11.463 に答える
4

もう1つのオプションは、JSONを使用json_encodeしてandを使用することjson_decodeです。

構成パラメーターでより豊富なデータ構造を使用できるようになります。

于 2009-01-25T01:03:24.933 に答える
1

個人的には、クラスで構成データを作成するのが好きです。

class appNameConfig {
    var $dbHost = 'localhost';
    var $dbUser = 'root';
    //...
 }

その後、それらを使用するためにあなたがしなければならないすべてはです

$config = new appNameConfig;
mysql_connect($config->dbHost, $config->dbUser, $config->dbPassword) or die(/*...*/);

構成を変更するには、クラスを含むファイルを読み取るだけです。次のような関数を使用します。

function updateConfig($parameter, $value) {
    $fh = fopen('config.php', 'w+');
    while(!feof($fh)) {
        $file .= fgets($fh);
     }
    $fileLines = explode("\n", $file);
    for($i=0;$i<count($fileLines);$i++) {
        if(strstr($fileLines[$i], $parameter)) {
            $fileLines[$i] = "$" . $parameter . " = '" . $value . "'";
         }
     }
    $file = implode("\n", $fileLines);
    fwrite($fh, $file);
    fclose($fh);
 }
于 2009-01-25T01:09:56.200 に答える