gpt4 book ai didi

symfony - 在服务中注入(inject) Doctrine Entity Manager - 不好的做法?

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

使用 https://insight.sensiolabs.com扫描/检查我的代码,我收到以下警告:
The Doctrine Entity Manager should not be passed as an argument.
为什么将实体管理器注入(inject)服务是一种不好的做法?什么是解决方案?

最佳答案

关于存储库不能持久化实体的评论。

class MyRepository extends EntityRepository
{
public function persist($entity) { return $this->_em->persist($entity); }
public function flush () { return $this->_em->flush (); }

我喜欢让我的存储库或多或少遵循“标准”存储库接口(interface)。所以我这样做:
interface NyRepositoryInterface
[
function save($entity);
function commit();
}
class MyRepository extends EntityRepository implements MyRepositoryInterface
{
public function save ($entity) { return $this->_em->persist($entity); }
public function commit() { return $this->_em->flush (); }

这允许我定义和注入(inject)非教义存储库。

您可能反对必须将这些辅助函数添加到每个存储库。但我发现一点复制/粘贴是值得的。特征在这里也可能有所帮助。

这个想法是远离实体管理器的整个概念。

关于symfony - 在服务中注入(inject) Doctrine Entity Manager - 不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681912/

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