0

2つの異なるエンティティリポジトリで使用する特定の機能があります。これは両方のリポジトリでまったく同じですが、もちろんあまり乾燥していません。

両方のリポジトリで使用できるように、この関数をどこに配置するのが適切かはわかりません。2つのリポジトリが異なるバンドルに含まれているという事実は、私が理解するのを容易にするものではありません。

ちなみに、これはテンプレートヘルパーではありません。これは、リポジトリが使用する必要のある関数です。

この関数をどこに配置すればよいので、一度だけ定義しますか?

4

2 に答える 2

0

以前に同様のことを解決しましたが、より良い解決策かどうかはわかりませんが、うまくいきました。

class CommonRepository extends EntityRepository
{

     public function common(){
      ...
     }

}


class RepoThatUseCommonRepository extends CommonRepository
{

     ...
}
于 2012-07-13T16:50:52.103 に答える
0

こんなことを言うと火傷を負ってしまうかもしれませんが、ユーティリティ クラスの静的メソッドに unDRY コードをスローするのはどうでしょうか。Foo::bar()それを使用すると、他のレポと同じくらい簡単です。

また、それを通常のパブリック メソッドにして、setter インジェクションを使用して、ユーティリティ オブジェクトを必要とする各レポに渡すこともできます。これにはもう少し作業が必要になりますが、おそらく、アプリに対して単体テストを実行する方が簡単でしょう。

ちょっとした余談ですが、@John Millikin は「安全な」静的メソッドと「安全でない」静的メソッドについて説明しています。

于 2012-07-13T22:56:22.623 に答える