Как сохранить общую конфигурацию для Zend, Phing и Phpunit? - PullRequest
8 голосов
/ 28 июля 2011

У меня есть 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 веб-сервиса

1 Ответ

7 голосов
/ 28 июля 2011

Моим первым инстинктивным желанием было поместить всю конфигурацию для всех четырех баз данных в build.properties, и Phing просто сгенерировал application.xml и phpunit.xml. Но, кажется, грязно иметь систему сборки, генерирующую файлы конфигурации.

Ну, чтобы полностью генерировать их, кажется немного грязным. Но если система сборки просто выполняет замену токенов из файла build.properties Phing в версиях .dist ваших различных файлов конфигурации, мне это кажется правильным.

Например, см. Исходный код блога Dasprids .

...