У меня есть приложение PHP, написанное на Zend Framework. Он использует Phing для системы сборки и PHPUnit для модульного тестирования. Все эти части имеют настройки конфигурации. Zend использует application.xml
, Phing использует build.xml
и, возможно, некоторые build.properties
, а PHPUnit использует phpunit.xml
.
Но где мне хранить информацию, которая требуется для всех трех компонентов? Подумайте о конфигурации базы данных (например, пароли).
В моем случае application.xml
имеет различные разделы (dev, staging, production), все с разными конфигурациями базы данных. Я недавно интегрировал ORM в свое приложение и теперь хочу провести модульное тестирование своих моделей. Итак, у меня есть четвертая база данных (unittesting), которая используется PHPUnit.
PHPUnit может обрабатывать данные фикстур, но не схемы базы данных. Итак, я подумал, что напишу цель сборки Phing, которая копирует схему базы данных из производственной или промежуточной среды в базу данных unittest. Таким образом, у меня есть дополнительное преимущество, заключающееся в том, что я могу даже выполнить единичное тестирование сценариев миграции базы данных. Но для этого Phing нужен доступ к нескольким базам данных одновременно.
Моим первым инстинктивным инстинктом было поместить всю конфигурацию для всех четырех баз данных в build.properties
и заставить Phing просто сгенерировать application.xml
и phpunit.xml
. Но, кажется, ээ, грязно , когда система сборки генерирует файлы конфигурации.
Какое здесь лучшее решение? Или мне просто продублировать детали конфигурации и не слишком беспокоиться?
Мысли
Я мог бы просто скопировать их. Это всего лишь несколько настроек, и они не должны часто меняться. Но держу пари, что когда они действительно изменятся, я забуду о дублировании (потому что это случается нечасто). Общие параметры включают в себя: