私は通常、このようなパターンを使用し、各サービスごとに1つずつ、さまざまな設定ファイルを用意しています。この例では、PostgreSQLのためにある:
1.
は、アプリケーションが実行する各環境に1つのファイルを持つ個々の環境ファイルを用意しますが、名前を付け、何か一般的なようconfig.local.php
。そのファイルをサーバー上に永久に置くか、または展開中にフック/ポストデプロイメントスクリプトなどを使用して、アクセスできない環境フォルダから通常の設定フォルダに関連する場所にコピーします。ファイル形式は次のようになります。
define("POSTGRESQL_DATABASE", "mydatabasename");
define("POSTGRESQL_USERNAME", "myusername");
define("POSTGRESQL_PASSWORD", "itsasecret");
define("POSTGRESQL_SERVER_IP", "localhost");
あなたはこのようにフォルダ構造を持っているかもしれません:
-config
-environments
-test
-config
-prod
-config
-public_html
...と展開後のフックで/config/
へ/environments/prod/config/
の内容をコピーします。
(おそらく別の安全なリポジトリからそれらをコピー?)理想的には、あなたのメインのソースコントロールのうち、設定ファイルを続けるだろうし、代わりに各サーバーでそれらを個別に作成
このファイルには、中に/config/
から含まれることになりますあなたの初期化プロセス。
2.
は、これらの定数
を使用してConfigurationクラスを作成しますセッターがプライベートであること(およびコンストラクタで呼ばれる)とゲッターは、公開された状態でお使いの設定変数を保持しているコンフィギュレーション・クラスを作成します。
class PostgreSQLDatabaseConfiguration
{
private $databaseName = null;
private $password = null;
private $serverIP = null;
private $username = null;
#endregion
#region Public methods
final public function __construct($serverIP, $databaseName, $username, $password) {
$this
->setServerIP($serverIP)
->setDatabaseName($databaseName)
->setUsername($username)
->setPassword($password);
}
/**
* @return string
*/
public function getDatabaseName() {
return $this->databaseName;
}
public function getPassword() {
return $this->password;
}
public function getServerIP() {
return $this->serverIP;
}
public function getUsername() {
return $this->username;
}
#endregion
#region Private methods
private function setDatabaseName($databaseName) {
$this->databaseName = $databaseName;
return $this;
}
private function setPassword($password) {
$this->password = $password;
return $this;
}
private function setServerIP($serverIP) {
$this->serverIP = $serverIP;
return $this;
}
private function setUsername($username) {
$this->username = $username;
return $this;
}
#endregion
}
3.コンフィギュレーションクラスを生成共通構成ファイルを持っている
このファイルには、すべての環境に共通するだろう(すなわち、あなたの標準的な展開の一部を構成する)と、前のステップから定義された定数を使用して、構成オブジェクトのインスタンスを作成します:
include('/config/config.local.php');
$postgresqlDatabaseConfiguration = new PostgreSQLDatabaseConfiguration(
POSTGRESQL_SERVER_IP,
POSTGRESQL_DATABASE,
POSTGRESQL_USERNAME,
POSTGRESQL_PASSWORD
);
あなたの構成オブジェクトは、あなたのDatabaseAccessorでクラスに注入する準備ができました、そして、あなたのメインのコードベースがあります環境に依存しない。