开发跨bundle共享的 Symfony2 实体存储库函数



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

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

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

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

我之前解决了类似的问题,我不知道是否是更好的解决方案,但它起了作用。

class CommonRepository extends EntityRepository
{
     public function common(){
      ...
     }
}

class RepoThatUseCommonRepository extends CommonRepository
{
     ...
}

我可能会因为这样说而火上浇油,但在实用程序类的静态方法中抛出unDRY代码呢?使用它就像任何回购中的Foo::bar()一样简单。

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

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

最新更新