0

我有一个在两个不同的实体存储库中使用的函数。这在两个存储库中完全相同,当然不是很干燥。

我真的不知道将这个函数放在哪里合适的地方,以便两个存储库都可以使用它。这两个存储库位于不同的捆绑包中这一事实并没有让我更容易弄清楚。

顺便说一句,它不是模板助手。这是存储库需要使用的功能。

我应该把这个函数放在哪里,所以我只定义一次?

4

2 回答 2

0

我可能会因为这样说而被烧死,但是将 unDRY 代码扔到实用程序类的静态方法中呢?使用它就像Foo::bar()从任何 repo 一样简单。

您也可以将其设为常规公共方法,并使用 setter 注入将实用程序对象传递给需要它的每个 repo。这将涉及更多工作,但您的应用程序可能更容易运行单元测试。

顺便说一句,@John Millikin 在描述“安全”和“不安全”静态方法方面做得很好。

于 2012-07-13T22:56:22.623 回答
0

我前段时间解决了类似的问题,我不知道是否是更好的解决方案,但它确实有效。

class CommonRepository extends EntityRepository
{

     public function common(){
      ...
     }

}


class RepoThatUseCommonRepository extends CommonRepository
{

     ...
}
于 2012-07-13T16:50:52.103 回答