2009-05-11 2 views
2

Webインターフェイスから設定を編集できるPHPアプリケーションを作成しています。私はテキストエディタでファイルを読み込めるようにユーザーを意味するわけではありません(実際にはadmins)、フォームを使用してファイルを変更すると、設定が変更されますファイル(と他のものも同様に)。開発のこの段階でPHPを後で編集するための設定を保存しています

、設定は例えば、PHPファイルに格納されています。

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

しかし、配列を解析する(と彼らは上記以外)、すなわちマルチレベルのネストされた(より複雑になります)、doesnのは、そんなに楽しいように見えません。また、特定の設定を追加したり削除したりすることができるので、ファイル全体を読み込んでからすべての設定を書き直すことも楽しいとは言えません。

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

  • カスタムXML
  • INI(にparse_ini_fileを使用できる)

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

データベースを使用できず、Webインターフェイスを使用して編集可能な設定を保存しなければならない場合は、 ?

(注:これは、それはすべての方法PHPファイルですが、設定を変更することはできませんthis one、に別の質問で、はい、セットアップは現在、正しい設定でPHPファイルを書き出すん)

+1

「配列の解析」とはどういう意味ですか?アプリケーションに直接ロードできませんか?それとも、最初にそれらを構築することが楽しいようには見えない(それは私にはもっと意味をなさされるだろう)ということですか? –

+0

私はそれらを直接(include()を介して)読み込むことができますが、どのオプションが使用されたのか、どのオプションが編集されたのかを把握しなければなりません。私はむしろフォームに直接ファイルをロードしたいと思います。 これは明確ですか? – Alya

答えて

1

[OK]を私は探していた答えは一切得られませんでした。ここに私が期待していたことがあります。 INIファイル内

INI

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

XML

  • は、通常の方法を用いて処理することができるオブジェクトにXMLをオンに「非常に簡単かつ容易に利用可能なツールセットを提供する」のSimpleXML拡張機能を使用することができます。
  • 非常に複雑な配列を使用できます。
  • 必要に応じて手で編集することができます。
  • 外部ツールを使用してファイルの正当性を検証できます。
  • 多くの多くのXMLプロセッサがPHPで利用可能です。

YAML

覚えています。noデータベースを。複雑な配列を使用できる必要があります。

0

設定に直接アクセスする人がいるのは気に入らないので、意図的な攻撃を防ぎ、きれいな出力を保証するために、バッファとして機能するためのインターフェイスを提供することが重要です。

これを念頭に置いて、サーバー側の形式の選択は、重要なことではありません。間違いなく他のすべての問題を回避することができれば問題ありません。

+1

そのようなインターフェイスを提供するのにどのような形式が役立つでしょうか?テキストエディタでファイルを読み込んで読み込めるようにするという意味ではありませんでした。私はそれを編集して明確にします。 – Alya

0

カスタムXMLファイルをお勧めします。設定が拡張され、PHP XMLライブラリを使用してアクセスすることができます。

簡単な例:あなたは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> 
2

、あなたはYAMLを検討したいと思うことがあります。私はRubyでしか使用していませんが、素早くGoogleは、PHPのサポートのためのいくつかのオプションがあることを示唆しています。 TBFのリンクには、PHPでYAMLを使用していますが、YMMVを使用しているものがあります(arguments against)。

+0

http://code.google.com/p/spyc/は、Symfonyフレームワークが使用するYAMLローダーです。また、SymfonyはPHPでYAMLを使用する強力なケースだと思います。 –

0

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

+0

OPは、彼がこれらの機能を認識していると述べていますが、「次のフォーマットを使用するとどのような長所と短所があるのですか? – nickf

+0

私は、iniファイル用のPHPネイティブ編集機能を認識していません。 – duckyflip

0

Iは、2段階のアプローチを使用しています。変数とその名前は、ユーザーに変更可能なインターフェースを持つデータベースに保管されます。ファイルを変更すると、ファイルがサーバーに保存され、アプリケーションから参照されます(変更はデータベースに保存されます)。更新が簡単になり、バックアップが簡単になります。ファイルをバックアップする必要はなく、データベースをバックアップするだけです。結果のファイルは$ variableName = 'variablevalue'という形式の.incファイルだけです。

+0

はい、ただし、元の投稿以外: (データベースを使用すると、はプロジェクトの要件により、ではありません。多くの場合、データベースはこの場合ではないことがよくあります)。 – Alya

0

なぜ、プレーンなPHPですか?

構成-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。

関連する問題