Mam aplikację PHP, która jest napisana za pomocą Zend Framework. Używa Phing do budowy systemu i PHPUnit do testowania jednostkowego. Wszystkie te części mają ustawienia konfiguracji. Zend używa application.xml
, Phing używa build.xml
i opcjonalnie niektóre build.properties
, a PHPUnit używa phpunit.xml
.Jak przechowywać wspólną konfigurację dla Zend, Phing i phpunit?
Ale gdzie mam przechowywać informacje wymagane przez wszystkie trzy komponenty? Pomyśl o konfiguracji bazy danych (na przykład hasła).
W moim przypadku application.xml
ma różne sekcje (dev, inscenizacja, produkcja) wszystkie z różnymi konfiguracjami bazy danych. Niedawno zaimplementowałem aplikację ORM w mojej aplikacji i chcę teraz dokonać resetu moich modeli. Mam więc czwartą bazę danych (unittesting), która jest używana przez PHPUnit.
PHPUnit obsługuje dane urządzeń, ale nie schematy bazy danych. Pomyślałem więc, że napiszę obiekt kompilacji Phing, który skopiuje schemat bazy danych z produkcji lub pomostu do bazy unittest. W ten sposób mam dodatkową korzyść, że mogę nawet zmienić mój skrypt migracji do bazy danych. Ale aby to zrobić, Phing potrzebuje dostępu do kilku baz danych w tym samym czasie.
Moim pierwszym instynktem było umieszczenie całej konfiguracji dla wszystkich czterech baz danych w build.properties
i posiadanie Phinga po prostu wygenerować application.xml
i phpunit.xml
. Ale, czuje się eh, brudny mieć system kompilacji generowania plików konfiguracyjnych.
Jakie jest najlepsze rozwiązanie? Czy powinienem po prostu duplikować szczegóły konfiguracji i nie martwić się zbytnio?
Myśli
może po prostu je powielać. To tylko kilka ustawień i nie powinny się one często zmieniać. Ale założę się, że kiedy się zmienią, zapomnę o duplikacji (ponieważ zdarza się to rzadko). Wspólne parametry obejmują:
- konfiguracji bazy danych (dev, przemieszczania, produkcji i unittests)
- sa ścieżki. Używamy starszych bibliotek, które nie współpracują z mechanizmami ładującymi. Do tej pory częściowo rozwiązaliśmy ten problem za pomocą inteligentnego pliku automatycznego załączania.
- Kilka WebService poświadczenia API
Ile masz duplikatów i jak często się zmienia? – hakre
Jest to garść zmiennych i nie powinny one zbyt często się zmieniać. Zaktualizuję nieco moje pytanie. –
Uwaga boczna: Stwierdziłem, że tworzenie niestandardowego autoloadera dla starych bibliotek i umieszczanie go na stosie autoloadera Zend działa jak cud. Nagle wszystkie moje niemądre wbudowane wywołania 'require' mogą zostać usunięte, a kod konsumenta _feels_ cleaner. –