gpt4 book ai didi

php - Symfony2 并避免过于冗长的代码

转载 作者:行者123 更新时间:2023-12-04 04:35:35 24 4
gpt4 key购买 nike

在我的大多数 Controller 中,我需要获得对一个或多个自定义实体存储库的引用,因此很自然地,我经常这样做:

/** @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所有其他 Controller 都可以从哪些 Controller 继承?

重构的 Controller 代码更像是:
$repo1 = $this->getMyFirstEntityRepository();
$repo2 = $this->getMySecondEntityRepository();
$repo3 = $this->getMyThirdEntityRepository();

这也可以很好地与 IDE 自动完成和类型推断一起使用。

这是好的做法吗?或者它是否违反了某种标准?它是否使代码不那么“松散耦合”?

最佳答案

这个怎么样?

$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');

在我看来,声明变量 $em解决所有 DRY 违规问题...

关于php - Symfony2 并避免过于冗长的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com