より良いソリューション
他の多くの構成ストレージ形式は、この種のものにより適しています。php
ファイルを調べると、配列、ini
、json
、xml
またはが返されますyaml
。
" PHP
file 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 行)。
YAML
PHP は直接YAML
サポートされていませんが、他のオプションがあります (以下を参照)。その構造は柔軟で拡張可能です。私にとって、個人的に理解することYAML
は直感的ではありませんでした。
Zend_Config
上記の形式のいずれかを読み書きするためのインターフェイスとして使用でき、ファイル形式自体を抽象化し、アプリケーションに形式に依存しない構成の処理方法を提供するために使用できます。
データベースを使用して構成を保存することも、一般的な構成を保存するための別の SQLite データベースを使用することもできます。これは通常、さまざまなタイプの階層化されたオーバーライドを可能にするきめ細かい検索可能な形式で多くの構成を保持する必要がある場合に使用されます (例: : 一般的なデフォルト、コントローラのデフォルト、アクションのデフォルト、特定のケースのデフォルト)。
PHPでそれを行う方法
@geomagas が言ったように、言語パーサーを作成する必要はありません。include
orを使用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 ファイルを使用します。必要に応じて書き換えます。