2

Web インターフェイスを介して設定を編集できる PHP アプリケーションを作成しています。ユーザー (実際には管理者のみ) がテキスト エディターでファイルを読み込めるようにするつもりはありませんでしたが、フォームを使用して変更を加えると、設定ファイルが変更されます (他のことも行います)。

開発のこの段階では、設定は PHP ファイルに保存されます。次に例を示します。

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

しかし、配列の構文解析 (上記よりも複雑 (つまり、複数レベルの入れ子) になる) は、あまり楽しくないようです。また、特定の設定を追加および削除できるため、ファイル全体を読み取ってからすべての設定を再度書き出すのも楽しくないようです。

次の形式を使用する利点と欠点は何ですか? (そして私が見逃した他のもの):

  • カスタム XML
  • INI (parse_ini_file を使用可能)

(プロジェクトの要件により、データベースの使用は適切ではありません。多くの状況でデータベースが好まれることは理解していますが、この場合はそうではありません。)

データベースを使用できず、Web インターフェイスを使用して編集できる設定を保存する必要があるとしたら、どうしますか?

(注: これは、設定を変更できないこの質問とは別の質問です。それはすべて PHP ファイルです。はい、セットアップは現在、正しい設定で PHP ファイルを書き出します。)

4

7 に答える 7

2

XML を使用することに専念していない場合は、YAMLを検討することをお勧めします。私はRubyでしか使用していませんが、簡単なGoogleは、PHPサポートにはいくつかのオプションがあることを示唆しています. TBF、そこにあるリンクには、 PHP で YAML を使用することに対するいくつかの議論が含まれていますが、YMMV.

于 2009-05-11T11:44:10.373 に答える
1

OK、私が探していた答えは何も得られませんでした。これが私が期待していた種類のものです。

INI

  • 設定を INI ファイルに保存することは、ユーザーが手動で編集する単純な設定に適している場合があります。
  • ただし、複雑な配列を作成するのは簡単ではありません。どの見出しが配列のどのレベルにあるかを理解するには、ある程度の精神的なアクロバットが必要です。
  • ファイルのどこにも使用してはならない予約語には、yes、no、true、false などがあります。これは問題になる可能性があります。
  • ファイル内で定数を使用できます。
  • INI ファイルを書き出す組み込みの方法はありません。

XML

  • 「非常にシンプルで使いやすいツールセットを提供する」SimpleXML 拡張機能を使用して、XML をオブジェクトに変換し、その後通常の方法で処理できます。
  • 非常に複雑な配列を使用できます。
  • 必要に応じて手動で編集できます。
  • 外部ツールを使用して、ファイルの有効性を検証できます。
  • PHP で使用できる多数の XML プロセッサ。

YAML

注意: データベースはありません。複雑な配列を使用できる必要があります。

于 2009-05-19T12:31:31.633 に答える
0

PHP には、プログラム設定を格納するためにプレーンテキスト形式を使用する INI ファイルを編集および解析するための関数が組み込まれています。

于 2009-05-11T13:46:56.710 に答える
0

私は2段階のアプローチを使用しました。変数とその名前は、ユーザーがそれらを変更できるインターフェイスを備えたデータベースに保存されます。それらを変更すると、ファイルがサーバーに保存され、アプリケーション全体で参照されます (変更は DB にも保存されます)。更新が簡単になり、バックアップが簡単になります。ファイルをバックアップする必要はなく、データベースをバックアップするだけです。結果のファイルは、$variableName = 'variablevalue'; の形式の .inc ファイルです。

于 2009-05-11T23:36:10.647 に答える
0

誰かが設定に直接アクセスするという考えは好きではないので、バッファとして機能するインターフェイスを提供し、意図的な攻撃を防ぎ、クリーンな出力を確保することが重要です。

それを念頭に置いて、サーバー側のフォーマットの選択はまったく重要ではありません。それと正しくインターフェースできる限り、他のすべての問題を回避できます。

于 2009-05-11T11:32:21.020 に答える
0

カスタム XML ファイルをお勧めします。そうすれば、構成が適切にスケーリングされ、PHP XML ライブラリを使用してアクセスできるようになります。

簡単な例:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>
于 2009-05-11T11:37:20.153 に答える
0

そして、プレーンphpではないのはなぜですか?

configure-form.php

フォームmethod=POST action='configure.php',

入力フィールド例name='upload' value='<?php echo UPLOAD; ?>'

configure.php ファイル:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

そして、あなたはそれを持っています。構成ファイルを作成する単純な php。

于 2010-04-01T05:41:45.340 に答える