私は現在、Zend Framework プロジェクト テンプレートを受け取り、Phing パラメーターに従って構成する Phing のビルド システムに取り組んでいます。私が遭遇した問題の 1 つは、Zend_Config_Writer_Ini を使用する場合です。
私の Phing タスクは、repo から application.default.ini という事前設定されたファイルを取得し、Zend_Config_Ini を使用してこれを変更し、ビルド ファイルからパラメーター (データベースの詳細など) を追加します。次に、それを application.ini に書き込み、プロジェクトで使用できるようにします。関連するタスク コードの簡略化されたバージョンは次のようになります。
$appConfig = new Zend_Config_Ini(
$appDefaultConfigPath,
null,
array(
'skipExtends' => true,
'allowModifications' => true
)
);
$appConfig->production->resources->db->params->host = $buildProperties->db->host;
$appConfig->production->resources->db->params->username = $buildProperties->db->username;
$appConfig->production->resources->db->params->password = $buildProperties->db->password;
$appConfig->production->resources->db->params->dbname = $buildProperties->db->dbname;
$writer = new Zend_Config_Writer_Ini();
$writer->setConfig($appConfig)
->setFilename($appConfigPath)
->write();
これは、データベースの資格情報に関する限りは正常に機能しますが、定義済みの定数を含む事前設定されたパスに関しては、何か問題が発生します。例えば:
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
になります:
bootstrap.path = "APPLICATION_PATH/Bootstrap.php"
さまざまな ini ファイルの読み取り/書き込み時にこれらの構成行を保持する方法はありますか、それともビルド ファイルを再構築してタスクを実行する前にファイルをコピーし、変更が必要な ini 行のみを変更する必要がありますか?