構成ファイルに最適なファイル形式は何ですか
-
20-08-2019 - |
質問
PHPでフレームワークを作成していますが、いくつかの設定ファイルが必要です。これらのファイルの一部には、不可避的に多数のエントリが含まれます。
これらの構成ファイルに最適なフォーマットは何ですか?
最高の定量化は次のとおりです。
- PHPで簡単に解析されます。解析コードを書く必要がなかったらいいのですが、これは契約を壊すものではありません。
- エントリが大量にある場合でも、人間は簡単に読むことができます
- 広く使用されている標準であり、カスタム形式はありません
- 簡潔さが高く評価されています
XMLを使い始めましたが、明白な理由ですぐにgaveめました。私はJSONとYAMLについて考えましたが、他にどんなものがあるか見てみたいと思いました。
解決
INIファイル形式はどうですか?これは事実上の構成ファイル標準であり、PHPにはその形式用の組み込みパーサーがあります。
他のヒント
なぜ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);
}
所属していません StackOverflow