2012-03-21 2 views
0

だから私たちのプロジェクトでは、我々は、私は、このファイルを簡単に変更するためのWebインターフェイスを作成する必要がありWebインターフェイス経由でカスタム設定ファイルを変更する最も良い方法は?

​​

のようになります設定ファイルを持っています。私はPHPまたはPythonのいずれかでJavaScriptを使用することを考えていました(実際には大きな違いはありません)。

これを実装するにはどうすればよいですか?オプションの値を配列または変数に格納する必要がありますか?しかし、クラスごとに別々の配列や変数を作成するにはどうすればよいですか?もし1000クラスがあれば?

おそらくどこにでも何も保存しないで、必要なオプションを正規表現でリアルタイムに見つけるべきでしょうか?

また、設定をクラスに関連付けるのが最善である方法に関するいくつかのコード例がありますか?つまり、例えば、プログラムはoption1:onがclass1という名前のクラスに属していることを知っています。

答えて

0

このような場合は、独自に発明するのではなく、XMLまたはYAMLのような構造化された形式を提案します。これを行うための

利点は次のとおりです。あなたは簡単にライブラリをつかむと、お好みの言語でそれを使用できるように

  • 人々は、それらの構造化フォーマットのエンコーダやパーサを書かれています。

  • 構造化されたフォーマットは、さまざまなアプリケーション間で簡単に移植できます。

  • 第三者は、設定ファイルをアプリケーションに簡単に実装できます。

あなたはXMLやYAMLを使用している場合は、Webインターフェイスを使用してそれらを編集するためとして、PHPの優れたXMLとYAMLの拡張機能を使用すると、簡単に設定ファイルの中を歩くと、必要な変数を変更できるようにする必要があります。

設定をクラスに関連付ける場合、これはXMLまたはYAMLを使用すると簡単に解決できます。 1. read.php:XMLで

、あなたのファイルは、この

<class name="class1"> 
<option1>on</option1> 
<optionN>off</optionN> 
</class> 

<class name="class2"> 
<option1>on</option1> 
<optionN>off</optionN> 
</class> 

<class name="class3"> 
<option1>on</option1> 
<optionN>off</optionN> 
</class> 
+0

私は実際にはこれも最善の方法だと思います。しかし、私たちのプロジェクトでは、すでに他の場所でも使用されているカスタム設定ファイルがあります。だからこそ私はそれにいくつかの問題を抱えている。 XMLやINIなどの方がはるかに簡単でしょう。 – radioprotector

+0

@radioprotector:その場合は、おそらく、あなたはcustom-config-to-XMLとXML-to-custom-configコンバータの組を書くことができます。これにより、XMLを介して操作を行い、カスタム設定形式で保存することができます。 –

0

のようになります。あなたは、単にこの設定ファイルを管理するために2つのPHPページを作成することができます設定ファイルを読み、フレンドリーに表示します道 2. save.phpは:

<?php 
$f = fopen('config.cfg', 'r'); 
# Read the file line by line 
$curr = ''; 
while(!feof($f)){ 
    $line = fgets($f); 
    if ($line=='%class'){ 
     $line = fgets($f); 
     $classname = explode(': ', $line)[1]; 
     $curr = $classname; 
     $cfg[$classname] = array(); 
    } 
    if ($line=='%classend'){ 
     continue; 
    } 
    $opt = explode(': ', $line); 
    $cfg[$curr][$opt[0]] = $opt[1]; 
} 
fclose($f); 
?> 
<html> 
<body> 
<!-- output the $cfg into form --> 
<form action="save.php" method="POST"> 
<?php foreach ($cfg as $k => $v): ?> 
<p> 
    <input type="text" name="<?php echo $k; ?>" value="<?php echo $k; ?>" /><br/> 
    <textarea name="<?php echo $k; ?>_v"><?php echo implode(',',$v); ?></textarea> 
</p> 
<?php endforeach; ?> 
<button type="submit">Save</button> 
</form> 
</body> 
</html> 

そしてsave.php:あなたは

read.phpの例のコードを変更するもの節約

<?php 
# try to save the POST data into file 
?> 
+0

ありがとう!私はそれを試してみる。 – radioprotector

関連する問題