8

ZendFrameworkで作成されたPHPアプリケーションがあります。ビルドシステムにはPhingを使用し、単体テストにはPHPUnitを使用します。これらすべてのパーツには構成設定があります。Zendはapplication.xml、Phingはbuild.xml、オプションでいくつかを使用build.propertiesし、PHPUnitはを使用しphpunit.xmlます。

しかし、3つのコンポーネントすべてに必要な情報はどこに保存すればよいでしょうか。データベース構成(パスワードなど)について考えてみてください。

私の場合、にapplication.xmlはさまざまなセクション(開発、ステージング、本番)があり、すべてデータベース構成が異なります。最近、アプリケーションにORMを統合しましたが、モデルを単体テストしたいと思います。したがって、PHPUnitで使用される4番目のデータベース(ユニットテスト)があります。

PHPUnitはフィクスチャデータを処理できますが、データベーススキーマは処理できません。そのため、データベーススキーマを本番またはステージングから単体テストデータベースにコピーするPhingビルドターゲットを作成することを考えていました。このようにして、データベース移行スクリプトを単体テストできるという追加の利点があります。しかし、それを行うには、Phingは同時に複数のデータベースにアクセスする必要があります。

私の最初の直感は、4つのデータベースすべてのすべての構成を入れて、build.propertiesPhingに単純に生成application.xmlしてもらうことでしphpunit.xmlた。しかし、ビルドシステムに構成ファイルを生成させるのは汚い感じがします。

ここでの最良の解決策は何ですか?または、構成の詳細を単純に複製して、あまり心配しないでください。

考え

単純に複製することができます。これはほんのわずかな設定であり、頻繁に変更する必要はありません。しかし、それらが変化するとき、私は重複を忘れてしまうでしょう(それはめったに起こらないので)。共有パラメータは次のとおりです。

  • データベース構成(開発、ステージング、本番、単体テスト)
  • パスを含めます。オートローダーで動作しない古いライブラリを使用しています。これまでのところ、インテリジェントな自動追加ファイルを使用してこれを部分的に解決しました。
  • いくつかのWebサービスAPIクレデンシャル
4

1 に答える 1

7

私の最初の直感は、4つのデータベースすべてのすべての構成をbuild.propertiesに入れ、Phingに単にapplication.xmlとphpunit.xmlを生成させることでした。しかし、ビルドシステムに構成ファイルを生成させるのは汚い感じがします。

まあ、それらを完全に生成することは少し汚いようです。しかし、ビルドシステムがさまざまな構成ファイルの.distバージョンでPhingのbuild.propertiesファイルからトークンを置き換えるだけの場合、それは私には問題ないようです。

例については、Daspridsブログのソースコードを参照してください。

于 2011-07-28T11:49:43.263 に答える