dongmei9508 2013-11-05 19:24
浏览 33
已采纳

Symfony2并避免过于冗长的代码

In most of my controllers, I need to get a reference to one or more of my custom entity repositories, so naturally, I do this a lot:

/** @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');

My question is: if I have a bunch of different Entities that I need a repository reference for, is it good practice to create a bunch of corresponding get[EntityName]Repository methods in some sort of BaseController which all other controllers could inherit from?

The refactored controller code would be more like:

$repo1 = $this->getMyFirstEntityRepository();
$repo2 = $this->getMySecondEntityRepository();
$repo3 = $this->getMyThirdEntityRepository();

Which would play nicely with IDE autocompletion and type inference as well.

Is this good practice? Or does it violate some sort of standard? Does it make the code any less "loosely coupled"?

  • 写回答

2条回答 默认 最新

  • doufei8250 2013-11-05 22:02
    关注

    How about this?

    $em = $this->getDoctrine()->getManager();
    /** @var $repo MyFirstEntityRepository */
    $repo1 = $em->getRepository('MyNamespaceMyBundle:MyFirstEntity');
    /** @var $repo MySecondEntityRepository */
    $repo2 = $em->getRepository('MyNamespaceMyBundle:MySecondEntity');
    /** @var $repo MyThirdEntityRepository */
    $repo3 = $em->getRepository('MyNamespaceMyBundle:MyThirdEntity');
    

    Seems to me declaring variable $em solves all the DRY violations...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测