2

以下のようにPHPで書かれた設定ファイルがあります。

<?php

class WebConfig {

    public static $WEBPATH = '/customers';
    public static $ACCOUNTPATH = '/empaccountpath';
    public static $INFO = '/accountInfo';
    const ACCOUNT_STATUS = '/account_status';
    const ENABLE_SEARCH = '/enable_search';
}

?>

$WEBPATHだから私は、などのファイル$ACCOUNTPATHの値を編集する機能を持つインターフェイスを PHP で開発したいと思いconstます。

簡単な PHP エディター スクリプトで上記の作業を実行できます。ただし、構文はチェックしません。

PHPで効率的に行う方法を提案してください。

4

2 に答える 2

3

より良いソリューション

他の多くの構成ストレージ形式は、この種のものにより適しています。phpファイルを調べると、配列inijsonxmlまたはが返されますyaml

" PHPfile returns array" は、次のような単純な PHP ファイルです。

return(
    array(
        'config_key' => 'config_value'
    )
);

?>

このファイルの戻り値は、インクルード時にコードで取得でき、配列に値が含ま$x = include('file.php');れます。$x

INI人間にとって読み書きが簡単で直感的です。限られた構造になっています。PHP は 1 つの関数でそれを読み取ることができますが、別の (デフォルトではない) パッケージでのみ書き込み機能を備えています。つまり、ini ファイルを自分で生成する必要があります。

JSON人間にとって読み書きが「かなり」シンプルで直感的です。フレキシブル構造の伸縮構造です。PHP はJSON、いくつかの関数のみを使用してファイルの読み取りと書き込みを行うことができます。残念ながら、PHP はきれいな書式設定を保持しないためJSON、ファイルを上書きすると、すべてが 1 行になり、その後は読みにくくなります。

XML人間にとって読みやすいシンプルで直感的なものであり、すべてが何であるかについて非常に詳細であるため、非常に有益です。私はとほぼ同じくらい柔軟な構造を持っており、JSON拡張可能です。PHP は を読み書きできますXMLが、そのためには数行のコードを使用する必要があります (単純なものの場合は 5 ~ 10 行)。

YAMLPHP は直接YAMLサポートされていませんが、他のオプションがあります (以下を参照)。その構造は柔軟で拡張可能です。私にとって、個人的に理解することYAMLは直感的ではありませんでした。

Zend_Config上記の形式のいずれかを読み書きするためのインターフェイスとして使用でき、ファイル形式自体を抽象化し、アプリケーションに形式に依存しない構成の処理方法を提供するために使用できます。

データベースを使用して構成を保存することも、一般的な構成を保存するための別の SQLite データベースを使用することもできます。これは通常、さまざまなタイプの階層化されたオーバーライドを可能にするきめ細かい検索可能な形式で多くの構成を保持する必要がある場合に使用されます (例: : 一般的なデフォルト、コントローラのデフォルト、アクションのデフォルト、特定のケースのデフォルト)。

PHPでそれを行う方法

@geomagas が言ったように、言語パーサーを作成する必要はありません。includeorを使用requireすると、PHP インタープリターは「新しい」クラスをメモリにロードし、確実に使用できるようにします。

必要なのは、次のような値を置き換えるテンプレート ファイルを作成することだけです。

<?php

class WebConfig {

    public static $WEBPATH = '$_replace_webpath';
    public static $ACCOUNTPATH = '$_replace_accountpath';
    public static $INFO = '$_replace_info';
    const ACCOUNT_STATUS = '$_replace_account_status';
    const ENABLE_SEARCH = '$_replace_enable_search';
}

次に、ファイルを読み込んで、次のような現在の値に置き換えます。

$config_template = file_get_contents('/path/to/config/template.php.template');
str_replace(
    array('$_replace_webpath' ... ),
    array('/customers' ... ),
    $config_template
);

PrestaShop設定には PHP ファイルを使用します。必要に応じて書き換えます。

于 2013-11-05T08:23:15.360 に答える
0

PHPクラスファイルに直接アクセスするのは危険すぎる....多くのセキュリティ上の問題....

ユーザーが編集できるようにするために、単純な html フォームを使用できますか。

JSON 形式を使用してファイルに保存します。

PHPは、値を保存して読み取るときに、json_encode()およびjson_decode()によってエンコードおよびデコードします。

于 2013-11-05T08:15:11.027 に答える