Как сохранить общую конфигурацию для zend, phing и phpunit?

У меня есть приложение 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 . Но, кажется, ээ, грязно , когда система сборки генерирует файлы конфигурации.

Какое здесь лучшее решение? Или мне просто продублировать детали конфигурации и не слишком беспокоиться?

Мысли

Я мог бы просто скопировать их. Это всего лишь несколько настроек, и они не должны часто меняться. Но держу пари, что когда они действительно изменятся, я забуду о дублировании (потому что это случается нечасто). Общие параметры включают в себя:

  • Конфигурация базы данных (разработка, подготовка, производство и модульные тесты)
  • Включить пути. Мы используем некоторые старые библиотеки, которые не работают с автозагрузчиками. Пока мы частично решили эту проблему с помощью интеллектуального файла с автоматическим добавлением.
  • Несколько учетных данных API веб-сервисов
8
задан Sander Marechal 28 July 2011 в 10:39
поделиться