在我的大多数控制器中,我需要获取一个或多个自定义实体存储库的引用,所以很自然地,我经常这样做:
/** @var $repo MyFirstEntityRepository */
$repo1 = $this->getDoctrine()->getManager()->getRepository('MyNamespaceMyBundle:MyFirstEntity');
/** @var $repo MySecondEntityRepository */
$repo2 = $this->getDoctrine()->getManager()->getRepository('MyNamespaceMyBundle:MySecondEntity');
/** @var $repo MyThirdEntityRepository */
$repo3 = $this->getDoctrine()->getManager()->getRepository('MyNamespaceMyBundle:MyThirdEntity');
我的问题是:如果我有一堆不同的实体需要一个存储库引用,那么在所有其他控制器可以继承get[EntityName]Repository
的某种类型中创建一堆相应的方法是一种好习惯吗?BaseController
重构后的控制器代码更像:
$repo1 = $this->getMyFirstEntityRepository();
$repo2 = $this->getMySecondEntityRepository();
$repo3 = $this->getMyThirdEntityRepository();
这也可以很好地与 IDE 自动完成和类型推断一起使用。
这是好习惯吗?还是违反了某种标准?它是否使代码变得不那么“松散耦合”?