質問

PHPでフレームワークを作成していますが、いくつかの設定ファイルが必要です。これらのファイルの一部には、不可避的に多数のエントリが含まれます。

これらの構成ファイルに最適なフォーマットは何ですか?

最高の定量化は次のとおりです。

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

XMLを使い始めましたが、明白な理由ですぐにgaveめました。私はJSONとYAMLについて考えましたが、他にどんなものがあるか見てみたいと思いました。

役に立ちましたか?

解決

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

parse_ini_file

他のヒント

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

非常にシンプルで強力です

Rubyプロジェクトは設定に多く使用します。

なぜdon <!>#180;設定にPHPファイルを使用しないのですか?

メリットは明白です:

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

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

別のオプションは、JSONを使用し、json_encodeおよびjson_decodeを使用することです。

設定パラメータでより豊富なデータ構造を使用できます。

Personlyクラスで設定データをやりたい。

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);
 }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top