В настоящее время я работаю над системой сборки в Phing, которая берет шаблон проекта Zend Framework и настраивает его в соответствии с параметрами Phing. Одна проблема, с которой я столкнулся, - это использование Zend_Config_Writer_Ini.
Моя задача Phing берет предварительно заполненный файл из репозитория 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, которые мне нужно изменить?